summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/other_tools/utils/archive_ops.cpp16
-rw-r--r--src/other_tools/utils/archive_ops.hpp2
2 files changed, 16 insertions, 2 deletions
diff --git a/src/other_tools/utils/archive_ops.cpp b/src/other_tools/utils/archive_ops.cpp
index 7115680f..dd291036 100644
--- a/src/other_tools/utils/archive_ops.cpp
+++ b/src/other_tools/utils/archive_ops.cpp
@@ -59,6 +59,10 @@ auto enable_write_filter(archive* aw, ArchiveType type) -> bool {
return (archive_write_add_filter_bzip2(aw) == ARCHIVE_OK);
case ArchiveType::TarXz:
return (archive_write_add_filter_xz(aw) == ARCHIVE_OK);
+ case ArchiveType::TarLz:
+ return (archive_write_add_filter_lzip(aw) == ARCHIVE_OK);
+ case ArchiveType::TarLzma:
+ return (archive_write_add_filter_lzma(aw) == ARCHIVE_OK);
default:
return false;
}
@@ -74,6 +78,10 @@ auto enable_read_filter(archive* ar, ArchiveType type) -> bool {
return (archive_read_support_filter_bzip2(ar) == ARCHIVE_OK);
case ArchiveType::TarXz:
return (archive_read_support_filter_xz(ar) == ARCHIVE_OK);
+ case ArchiveType::TarLz:
+ return (archive_read_support_filter_lzip(ar) == ARCHIVE_OK);
+ case ArchiveType::TarLzma:
+ return (archive_read_support_filter_lzma(ar) == ARCHIVE_OK);
case ArchiveType::TarAuto:
return (archive_read_support_filter_all(ar) == ARCHIVE_OK);
default:
@@ -137,7 +145,9 @@ auto ArchiveOps::EnableWriteFormats(archive* aw, ArchiveType type)
case ArchiveType::Tar:
case ArchiveType::TarGz:
case ArchiveType::TarBz2:
- case ArchiveType::TarXz: {
+ case ArchiveType::TarXz:
+ case ArchiveType::TarLz:
+ case ArchiveType::TarLzma: {
if ((archive_write_set_format_pax_restricted(aw) != ARCHIVE_OK) or
not enable_write_filter(aw, type)) {
return std::string("ArchiveOps: ") +
@@ -164,7 +174,9 @@ auto ArchiveOps::EnableReadFormats(archive* ar, ArchiveType type)
case ArchiveType::Tar:
case ArchiveType::TarGz:
case ArchiveType::TarBz2:
- case ArchiveType::TarXz: {
+ case ArchiveType::TarXz:
+ case ArchiveType::TarLz:
+ case ArchiveType::TarLzma: {
if ((archive_read_support_format_tar(ar) != ARCHIVE_OK) or
not enable_read_filter(ar, type)) {
return std::string("ArchiveOps: ") +
diff --git a/src/other_tools/utils/archive_ops.hpp b/src/other_tools/utils/archive_ops.hpp
index 74fcf39c..91595867 100644
--- a/src/other_tools/utils/archive_ops.hpp
+++ b/src/other_tools/utils/archive_ops.hpp
@@ -31,6 +31,8 @@ enum class ArchiveType : size_t {
TarGz,
TarBz2,
TarXz,
+ TarLz,
+ TarLzma,
TarAuto, // autodetect tarball-type archives
};