X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=libdocument%2Fev-file-helpers.c;h=cab0ad542c250e1b872bb3b4f875655e83d8a15b;hb=690c43bf613d0c69579072f1cffb1898ef0b0856;hp=e0392f43089fa0ef866c27bc020559d91202b060;hpb=5e37f3096370b699ad7a9ebb58eacf96e52761e2;p=evince.git diff --git a/libdocument/ev-file-helpers.c b/libdocument/ev-file-helpers.c index e0392f43..cab0ad54 100644 --- a/libdocument/ev-file-helpers.c +++ b/libdocument/ev-file-helpers.c @@ -319,13 +319,13 @@ ev_mkdtemp (const char *template, void ev_tmp_filename_unlink (const gchar *filename) { - const gchar *tempdir; - if (!filename) return; - tempdir = g_get_tmp_dir (); - if (g_str_has_prefix (filename, tempdir) == 0) { + if (!tmp_dir) + return; + + if (g_str_has_prefix (filename, tmp_dir)) { g_unlink (filename); } } @@ -369,6 +369,25 @@ ev_tmp_uri_unlink (const gchar *uri) g_object_unref (file); } +gboolean +ev_file_is_temp (GFile *file) +{ + gchar *path; + gboolean retval; + + if (!g_file_is_native (file)) + return FALSE; + + path = g_file_get_path (file); + if (!path) + return FALSE; + + retval = g_str_has_prefix (path, g_get_tmp_dir ()); + g_free (path); + + return retval; +} + /** * ev_xfer_uri_simple: * @from: the source URI @@ -506,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 @@ -527,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; }