[file-roller] Add support for Zstandard compressed files (.zst)
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [file-roller] Add support for Zstandard compressed files (.zst)
- Date: Sat, 12 Oct 2019 15:08:36 +0000 (UTC)
commit 81bfff0954936c8b381498309ff674c9f6dc7443
Author: Felix Riemann <friemann gnome org>
Date: Sat Feb 2 20:11:15 2019 +0100
Add support for Zstandard compressed files (.zst)
README | 2 +-
data/supported-mime-types | 1 +
src/fr-command-cfile.c | 23 +++++++++++++++++++++++
src/fr-init.c | 2 ++
4 files changed, 27 insertions(+), 1 deletion(-)
---
diff --git a/README b/README
index 7a4765a4..85915977 100644
--- a/README
+++ b/README
@@ -50,7 +50,7 @@
* ZIP Archived Comic Book (.cbz)
* ZOO Compressed Archive File (.zoo)
* Single files compressed with gzip (.gz), brotli (.br), bzip (.bz), bzip2 (.bz2), compress (.Z),
- lrzip (.lrz), lzip (.lz), lzop (.lzo), rzip(.rz), xz (.xz).
+ lrzip (.lrz), lzip (.lz), lzop (.lzo), rzip(.rz), xz (.xz), Zstandard (.zst).
* Home Page
diff --git a/data/supported-mime-types b/data/supported-mime-types
index fff26752..4602b4d2 100644
--- a/data/supported-mime-types
+++ b/data/supported-mime-types
@@ -59,3 +59,4 @@ application/x-zip-compressed;
application/x-zstd-compressed-tar;
application/x-zoo;
application/zip;
+application/zstd;
diff --git a/src/fr-command-cfile.c b/src/fr-command-cfile.c
index 590546dd..50884953 100644
--- a/src/fr-command-cfile.c
+++ b/src/fr-command-cfile.c
@@ -314,6 +314,14 @@ fr_command_cfile_add (FrCommand *comm,
fr_process_add_arg (comm->process, compressed_filename);
fr_process_end_command (comm->process);
}
+ else if (_g_mime_type_matches (archive->mime_type, "application/zstd")) {
+ fr_process_begin_command (comm->process, "zstd");
+ fr_process_set_working_dir (comm->process, temp_dir);
+ fr_process_add_arg (comm->process, "--");
+ fr_process_add_arg (comm->process, filename);
+ fr_process_end_command (comm->process);
+ compressed_filename = g_strconcat (filename, ".zst", NULL);
+ }
else {
g_warning ("Unhandled mime type: '%s'", archive->mime_type);
g_warn_if_reached ();
@@ -478,6 +486,14 @@ fr_command_cfile_extract (FrCommand *comm,
fr_process_add_arg (comm->process, uncompr_file);
fr_process_end_command (comm->process);
}
+ else if (_g_mime_type_matches (archive->mime_type, "application/zstd")) {
+ fr_process_begin_command (comm->process, "zstd");
+ fr_process_set_working_dir (comm->process, temp_dir);
+ fr_process_add_arg (comm->process, "-f");
+ fr_process_add_arg (comm->process, "-d");
+ fr_process_add_arg (comm->process, temp_file);
+ fr_process_end_command (comm->process);
+ }
/* copy uncompress file to the dest dir */
@@ -521,6 +537,7 @@ const char *cfile_mime_type[] = { "application/x-gzip",
"application/x-lzop",
"application/x-rzip",
"application/x-xz",
+ "application/zstd",
NULL };
@@ -582,6 +599,10 @@ fr_command_cfile_get_capabilities (FrArchive *archive,
if (_g_program_is_available ("lz4", check_command))
capabilities |= FR_ARCHIVE_CAN_READ_WRITE;
}
+ else if (_g_mime_type_matches (mime_type, "application/zstd")) {
+ if (_g_program_is_available ("zstd", check_command))
+ capabilities |= FR_ARCHIVE_CAN_READ_WRITE;
+ }
return capabilities;
}
@@ -610,6 +631,8 @@ fr_command_cfile_get_packages (FrArchive *archive,
return PACKAGES ("rzip");
else if (_g_mime_type_matches (mime_type, "application/x-lz4"))
return PACKAGES ("lz4");
+ else if (_g_mime_type_matches (mime_type, "application/zstd"))
+ return PACKAGES ("zstd");
return NULL;
}
diff --git a/src/fr-init.c b/src/fr-init.c
index 9639fe90..b13680fc 100644
--- a/src/fr-init.c
+++ b/src/fr-init.c
@@ -118,6 +118,7 @@ FrMimeTypeDescription mime_type_desc[] = {
{ "application/x-zoo", ".zoo", 0 },
{ "application/x-zstd-compressed-tar", ".tar.zst", 0 },
{ "application/zip", ".zip", 0 },
+ { "application/zstd", ".zst", 0 },
{ NULL, NULL, 0 }
};
@@ -192,6 +193,7 @@ FrExtensionType file_ext_type[] = {
{ ".Z", "application/x-compress" },
{ ".zip", "application/zip" },
{ ".zoo", "application/x-zoo" },
+ { ".zst", "application/zstd" },
{ NULL, NULL }
};
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]