Update ArchiveConfiguration
This commit is contained in:
@@ -10,20 +10,36 @@
|
||||
|
||||
namespace openVulkanoCpp
|
||||
{
|
||||
struct ArchiveConfiguration
|
||||
{
|
||||
enum class ArchiveType { TAR = 0, CPIO, ISO, ZIP, XAR, SEVEN_ZIP, WARC, SHAR };
|
||||
enum class CompressionType { AUTO, NONE, GZIP, BZIP2, XZ, LZ4, ZSTD };
|
||||
enum class ArchiveType { TAR = 0, CPIO, ISO, ZIP, XAR, SEVEN_ZIP, WARC, SHAR };
|
||||
|
||||
ArchiveType type = ArchiveType::TAR;
|
||||
CompressionType compression = CompressionType::AUTO;
|
||||
int compressionLevel = -1;
|
||||
enum class CompressionType { AUTO = 0, NONE, GZIP, BZIP2, XZ, LZ4, ZSTD };
|
||||
|
||||
struct ArchiveConfiguration final
|
||||
{
|
||||
|
||||
ArchiveType type;
|
||||
CompressionType compression;
|
||||
int compressionLevel;
|
||||
|
||||
constexpr ArchiveConfiguration(ArchiveType archiveType = ArchiveType::TAR,
|
||||
CompressionType compressionType = CompressionType::AUTO,
|
||||
int level = -1)
|
||||
: type(archiveType), compression(compressionType), compressionLevel(level)
|
||||
{}
|
||||
|
||||
[[nodiscard]] static ArchiveConfiguration FromFileName(const char* fileName);
|
||||
|
||||
[[nodiscard]] std::string GetFileExtension() const;
|
||||
static ArchiveConfiguration FromFileName(const char* fileName);
|
||||
|
||||
[[nodiscard]] int GetLibArchiveArchiveType() const;
|
||||
|
||||
[[nodiscard]] int GetLibArchiveCompressionType() const;
|
||||
};
|
||||
|
||||
namespace ArchiveConfig
|
||||
{
|
||||
inline constexpr ArchiveConfiguration TAR = {ArchiveType::TAR, CompressionType::NONE, 0};
|
||||
inline constexpr ArchiveConfiguration TAR_GZ = {ArchiveType::TAR, CompressionType::GZIP, 6};
|
||||
inline constexpr ArchiveConfiguration TAR_GZ9 = {ArchiveType::TAR, CompressionType::GZIP, 9};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,11 +20,11 @@ namespace openVulkanoCpp
|
||||
: ArchiveBase(archive_write_new(), archive_entry_new(), logger)
|
||||
{ //TODO error handling
|
||||
ChkErr(archive_write_set_format(m_archive, archiveConfiguration.GetLibArchiveArchiveType()));
|
||||
if (archiveConfiguration.type == ArchiveConfiguration::ArchiveType::TAR)
|
||||
if (archiveConfiguration.type == ArchiveType::TAR)
|
||||
{
|
||||
ChkErr(archive_write_add_filter(m_archive, archiveConfiguration.GetLibArchiveCompressionType()));
|
||||
}
|
||||
if (archiveConfiguration.compression != ArchiveConfiguration::CompressionType::NONE &&
|
||||
if (archiveConfiguration.compression != CompressionType::NONE &&
|
||||
archiveConfiguration.compressionLevel > 0)
|
||||
{
|
||||
std::string level = "compression-level=" + std::to_string(archiveConfiguration.compressionLevel);
|
||||
|
||||
Reference in New Issue
Block a user