]> www.fi.muni.cz Git - evince.git/blobdiff - libdocument/ev-file-helpers.c
[dualscreen] fix crash on ctrl+w and fix control window closing
[evince.git] / libdocument / ev-file-helpers.c
index e0392f43089fa0ef866c27bc020559d91202b060..cab0ad542c250e1b872bb3b4f875655e83d8a15b 100644 (file)
@@ -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;
        }