From 89757d717dd93b38ee5fe1d282b5946641fc6f29 Mon Sep 17 00:00:00 2001 From: Paul Cristian Sarbu Date: Thu, 10 Aug 2023 17:17:42 +0200 Subject: ArchiveOps: Allow lzip and lzma compression filters for tarballs These are provided by the recently added liblzma external dependency. --- src/other_tools/utils/archive_ops.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'src/other_tools/utils/archive_ops.cpp') 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: ") + -- cgit v1.2.3