summaryrefslogtreecommitdiff
path: root/src/other_tools/utils/archive_ops.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/other_tools/utils/archive_ops.cpp')
-rw-r--r--src/other_tools/utils/archive_ops.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/other_tools/utils/archive_ops.cpp b/src/other_tools/utils/archive_ops.cpp
index a0804abc..f0d02531 100644
--- a/src/other_tools/utils/archive_ops.cpp
+++ b/src/other_tools/utils/archive_ops.cpp
@@ -148,6 +148,10 @@ auto ArchiveOps::EnableWriteFormats(archive* aw, ArchiveType type)
std::string(archive_error_string(aw));
}
} break;
+ case ArchiveType::ZipAuto: {
+ return std::string(
+ "ArchiveOps: Writing a zip-like archive must be explicit");
+ }
case ArchiveType::Tar:
case ArchiveType::TarGz:
case ArchiveType::TarBz2:
@@ -182,6 +186,16 @@ auto ArchiveOps::EnableReadFormats(archive* ar, ArchiveType type)
std::string(archive_error_string(ar));
}
} break;
+ case ArchiveType::ZipAuto: {
+ if (archive_read_support_format_7zip(ar) != ARCHIVE_OK) {
+ return std::string("ArchiveOps: ") +
+ std::string(archive_error_string(ar));
+ }
+ if (archive_read_support_format_zip(ar) != ARCHIVE_OK) {
+ return std::string("ArchiveOps: ") +
+ std::string(archive_error_string(ar));
+ }
+ } break;
case ArchiveType::TarAuto:
case ArchiveType::Tar:
case ArchiveType::TarGz: