summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorinfirit <[email protected]>2014-12-09 16:02:36 +0100
committerinfirit <[email protected]>2014-12-09 23:02:28 +0100
commit30a41d9c9cb55687675d00b98835a5b54c120b43 (patch)
treef552ab311fdb7799e9b4a009d298fc95ebb9426d
parent0412a5fb05ca8726129a5f6f4d2ef599e804e444 (diff)
downloadatril-30a41d9c9cb55687675d00b98835a5b54c120b43.tar.bz2
atril-30a41d9c9cb55687675d00b98835a5b54c120b43.tar.xz
libdocument: Add xz compression support
Taken from evince commit: 38cfc027fc96ac19452c3138614e2c8deff63633 From: Christian Persch <[email protected]>
-rw-r--r--libdocument/ev-document-factory.c2
-rw-r--r--libdocument/ev-file-helpers.c14
-rw-r--r--libdocument/ev-file-helpers.h3
3 files changed, 14 insertions, 5 deletions
diff --git a/libdocument/ev-document-factory.c b/libdocument/ev-document-factory.c
index 4d5378f6..c77b8d04 100644
--- a/libdocument/ev-document-factory.c
+++ b/libdocument/ev-document-factory.c
@@ -99,6 +99,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 779b635c..23582ec8 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 9e3b0efe..0a6ff7e0 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);