diff options
Diffstat (limited to 'src/fr-command-cfile.c')
-rw-r--r-- | src/fr-command-cfile.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/fr-command-cfile.c b/src/fr-command-cfile.c index 9b855a8..e71ea65 100644 --- a/src/fr-command-cfile.c +++ b/src/fr-command-cfile.c @@ -299,6 +299,14 @@ fr_command_cfile_add (FrCommand *comm, compressed_filename = g_strconcat (filename, ".rz", NULL); } + else if (is_mime_type (comm->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, filename); + fr_process_end_command (comm->process); + compressed_filename = g_strconcat (filename, ".zst", NULL); + } + /* copy compressed file to the dest dir */ fr_process_begin_command (comm->process, "cp"); @@ -436,6 +444,14 @@ fr_command_cfile_extract (FrCommand *comm, fr_process_end_command (comm->process); } + else if (is_mime_type (comm->mime_type, "application/zstd")) { + fr_process_begin_command (comm->process, "zstd"); + 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 */ uncompr_file = remove_extension_from_path (temp_file); @@ -515,6 +531,7 @@ const char *cfile_mime_type[] = { "application/x-gzip", "application/x-lzop", "application/x-rzip", "application/x-xz", + "application/zstd", NULL }; @@ -571,6 +588,10 @@ fr_command_cfile_get_capabilities (FrCommand *comm, if (is_program_available ("rzip", check_command)) capabilities |= FR_COMMAND_CAN_READ_WRITE; } + else if (is_mime_type (mime_type, "application/zstd")) { + if (is_program_available ("zstd", check_command)) + capabilities |= FR_COMMAND_CAN_READ_WRITE; + } return capabilities; } @@ -610,6 +631,8 @@ fr_command_cfile_get_packages (FrCommand *comm, return PACKAGES ("lzop"); else if (is_mime_type (mime_type, "application/x-rzip")) return PACKAGES ("rzip"); + else if (is_mime_type (mime_type, "application/zstd")) + return PACKAGES ("zstd"); return NULL; } |