]> www.fi.muni.cz Git - evince.git/blobdiff - libdocument/ev-file-helpers.c
[totem-screensaver] Adapt to GDBus API change
[evince.git] / libdocument / ev-file-helpers.c
index 01bf089ef4910447df92859c7d00499de7d0a0ea..edd4e4fd0adc2414e6918cab61dc7bceb4ce75e8 100644 (file)
@@ -14,7 +14,7 @@
  *
  *  You should have received a copy of the GNU General Public License
  *  along with this program; if not, write to the Free Software
  *
  *  You should have received a copy of the GNU General Public License
  *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  */
 
 #include <config.h>
  */
 
 #include <config.h>
@@ -319,13 +319,13 @@ ev_mkdtemp (const char        *template,
 void
 ev_tmp_filename_unlink (const gchar *filename)
 {
 void
 ev_tmp_filename_unlink (const gchar *filename)
 {
-       const gchar *tempdir;
-       
        if (!filename)
                return;
 
        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);
        }
 }
                g_unlink (filename);
        }
 }
@@ -369,6 +369,25 @@ ev_tmp_uri_unlink (const gchar *uri)
        g_object_unref (file);
 }
 
        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
 /**
  * ev_xfer_uri_simple:
  * @from: the source URI
@@ -397,9 +416,7 @@ ev_xfer_uri_simple (const char *from,
        target_file = g_file_new_for_uri (to);
        
        result = g_file_copy (source_file, target_file,
        target_file = g_file_new_for_uri (to);
        
        result = g_file_copy (source_file, target_file,
-#if GLIB_CHECK_VERSION(2,19,0)
                              G_FILE_COPY_TARGET_DEFAULT_PERMS |
                              G_FILE_COPY_TARGET_DEFAULT_PERMS |
-#endif
                              G_FILE_COPY_OVERWRITE,
                              NULL, NULL, NULL, error);
 
                              G_FILE_COPY_OVERWRITE,
                              NULL, NULL, NULL, error);
 
@@ -438,6 +455,7 @@ get_mime_type_from_uri (const gchar *uri, GError **error)
 static gchar *
 get_mime_type_from_data (const gchar *uri, GError **error)
 {
 static gchar *
 get_mime_type_from_data (const gchar *uri, GError **error)
 {
+#ifndef G_OS_WIN32
        GFile            *file;
        GFileInputStream *input_stream;
        gssize            size_read;
        GFile            *file;
        GFileInputStream *input_stream;
        gssize            size_read;
@@ -477,6 +495,13 @@ get_mime_type_from_data (const gchar *uri, GError **error)
        mime_type = g_content_type_get_mime_type (content_type);
        g_free (content_type);
        return mime_type;
        mime_type = g_content_type_get_mime_type (content_type);
        g_free (content_type);
        return mime_type;
+#else
+       /*
+        * On Windows, the implementation of g_content_type_guess() is too limited at the moment, so we do not
+        * use it and fall back to get_mime_type_from_uri()
+        */
+       return get_mime_type_from_uri (uri, error);
+#endif /* G_OS_WIN32 */
 }
 
 /**
 }
 
 /**