diff options
Diffstat (limited to 'backend/comics/comics-document.c')
-rw-r--r-- | backend/comics/comics-document.c | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/backend/comics/comics-document.c b/backend/comics/comics-document.c index 841524e7..9f945c6f 100644 --- a/backend/comics/comics-document.c +++ b/backend/comics/comics-document.c @@ -45,7 +45,8 @@ typedef enum GNAUNRAR, UNZIP, P7ZIP, - TAR + TAR, + UNARCHIVER } ComicBookDecompressType; typedef struct _ComicsDocumentClass ComicsDocumentClass; @@ -107,7 +108,10 @@ static const ComicBookDecompressCommand command_usage_def[] = { {NULL , "%s l -- %s" , "%s x -y %s -o%s", FALSE, OFFSET_7Z}, /* tar */ - {"%s -xOf" , "%s -tf %s" , NULL , FALSE, NO_OFFSET} + {"%s -xOf" , "%s -tf %s" , NULL , FALSE, NO_OFFSET}, + + /* UNARCHIVER */ + {"unar -o -" , "%s %s" , NULL , FALSE, NO_OFFSET} }; static void comics_document_document_thumbnails_iface_init (EvDocumentThumbnailsInterface *iface); @@ -356,6 +360,12 @@ comics_check_decompress_command (gchar *mime_type, return TRUE; } comics_document->selected_command = + g_find_program_in_path ("lsar"); + if (comics_document->selected_command) { + comics_document->command_usage = UNARCHIVER; + return TRUE; + } + comics_document->selected_command = g_find_program_in_path ("bsdtar"); if (comics_document->selected_command) { comics_document->command_usage = TAR; @@ -380,6 +390,12 @@ comics_check_decompress_command (gchar *mime_type, comics_document->command_usage = TAR; return TRUE; } + comics_document->selected_command = + g_find_program_in_path ("lsar"); + if (comics_document->selected_command) { + comics_document->command_usage = UNARCHIVER; + return TRUE; + } } else if (g_content_type_is_a (mime_type, "application/x-cb7") || g_content_type_is_a (mime_type, "application/x-7z-compressed")) { @@ -409,6 +425,12 @@ comics_check_decompress_command (gchar *mime_type, comics_document->command_usage = TAR; return TRUE; } + comics_document->selected_command = + g_find_program_in_path ("lsar"); + if (comics_document->selected_command) { + comics_document->command_usage = UNARCHIVER; + return TRUE; + } } else if (g_content_type_is_a (mime_type, "application/x-cbt") || g_content_type_is_a (mime_type, "application/x-tar")) { /* tar utility (Tape ARchive) */ @@ -424,6 +446,12 @@ comics_check_decompress_command (gchar *mime_type, comics_document->command_usage = TAR; return TRUE; } + comics_document->selected_command = + g_find_program_in_path ("lsar"); + if (comics_document->selected_command) { + comics_document->command_usage = UNARCHIVER; + return TRUE; + } } else { g_set_error (error, EV_DOCUMENT_ERROR, |