From: Christian Persch Date: Sat, 4 Dec 2010 21:09:55 +0000 (+0100) Subject: libdocument: Add xz compression support X-Git-Tag: EVINCE_2_91_4~53 X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=commitdiff_plain;h=38cfc027fc96ac19452c3138614e2c8deff63633;p=evince.git libdocument: Add xz compression support --- diff --git a/libdocument/ev-document-factory.c b/libdocument/ev-document-factory.c index 2bed3906..1f1eb0db 100644 --- a/libdocument/ev-document-factory.c +++ b/libdocument/ev-document-factory.c @@ -47,6 +47,8 @@ get_compression_from_mime_type (const gchar *mime_type) return EV_COMPRESSION_GZIP; else if (g_ascii_strcasecmp (type, "bz") == 0) return EV_COMPRESSION_BZIP2; + else if (g_ascii_strcasecmp (type, "xz") == 0) + return EV_COMPRESSION_LZMA; } return EV_COMPRESSION_NONE; diff --git a/libdocument/ev-file-helpers.c b/libdocument/ev-file-helpers.c index edd4e4fd..cab0ad54 100644 --- a/libdocument/ev-file-helpers.c +++ b/libdocument/ev-file-helpers.c @@ -525,8 +525,14 @@ ev_file_get_mime_type (const gchar *uri, } /* Compressed files support */ -#define BZIPCOMMAND "bzip2" -#define GZIPCOMMAND "gzip" + +static const char *compressor_cmds[] = { + NULL, + "bzip2", + "gzip", + "xz" +}; + #define N_ARGS 4 #define BUFFER_SIZE 1024 @@ -546,13 +552,13 @@ compression_run (const gchar *uri, if (type == EV_COMPRESSION_NONE) return NULL; - cmd = g_find_program_in_path ((type == EV_COMPRESSION_BZIP2) ? BZIPCOMMAND : GZIPCOMMAND); + cmd = g_find_program_in_path (compressor_cmds[type]); if (!cmd) { /* FIXME: better error codes! */ /* FIXME: i18n later */ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED, "Failed to find the \"%s\" command in the search path.", - type == EV_COMPRESSION_BZIP2 ? BZIPCOMMAND : GZIPCOMMAND); + compressor_cmds[type]); return NULL; } diff --git a/libdocument/ev-file-helpers.h b/libdocument/ev-file-helpers.h index fffae03f..0abc5c28 100644 --- a/libdocument/ev-file-helpers.h +++ b/libdocument/ev-file-helpers.h @@ -32,7 +32,8 @@ G_BEGIN_DECLS typedef enum { EV_COMPRESSION_NONE, EV_COMPRESSION_BZIP2, - EV_COMPRESSION_GZIP + EV_COMPRESSION_GZIP, + EV_COMPRESSION_LZMA } EvCompressionType; void _ev_file_helpers_init (void);