]> www.fi.muni.cz Git - evince.git/commitdiff
Move mime-type functions from document-facrory to file-helpers so that it
authorCarlos Garcia Campos <carlosgc@gnome.org>
Sat, 29 Nov 2008 12:09:10 +0000 (12:09 +0000)
committerCarlos Garcia Campos <carlosgc@src.gnome.org>
Sat, 29 Nov 2008 12:09:10 +0000 (12:09 +0000)
2008-11-29  Carlos Garcia Campos  <carlosgc@gnome.org>

* libdocument/ev-document-factory.c: (get_document_from_uri),
(ev_document_factory_get_document):
* libdocument/ev-file-helpers.[ch]: (get_mime_type_from_uri),
(get_mime_type_from_data), (ev_file_get_mime_type):

Move mime-type functions from document-facrory to file-helpers so
that it can be reused.

svn path=/trunk/; revision=3279

ChangeLog
libdocument/ev-document-factory.c
libdocument/ev-file-helpers.c
libdocument/ev-file-helpers.h

index 2140c3754809a4608f2b7f4d64a47525fb1fc015..3bb920b9ac34792e21731066111817a6210f13d9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2008-11-29  Carlos Garcia Campos  <carlosgc@gnome.org>
+
+       * libdocument/ev-document-factory.c: (get_document_from_uri),
+       (ev_document_factory_get_document):
+       * libdocument/ev-file-helpers.[ch]: (get_mime_type_from_uri),
+       (get_mime_type_from_data), (ev_file_get_mime_type):
+
+       Move mime-type functions from document-facrory to file-helpers so
+       that it can be reused.
+       
 2008-11-29  Carlos Garcia Campos  <carlosgc@gnome.org>
 
        * shell/ev-window.c: (ev_window_load_job_cb), (set_uri_mtime),
index 125583314fab195ff955f1158ed28ed33f71d4b7..09baef24683cf66412f633b39633db642088ba8c 100644 (file)
@@ -104,61 +104,9 @@ get_compression_from_mime_type (const gchar *mime_type)
        return EV_COMPRESSION_NONE;
 }
 
-static gchar *
-get_mime_type_from_uri (const gchar *uri, GError **error)
-{
-       GFile     *file;
-       GFileInfo *file_info;
-       gchar     *mime_type;
-
-       file = g_file_new_for_uri (uri);
-       file_info = g_file_query_info (file,
-                                      G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
-                                      0, NULL, error);
-       g_object_unref (file);
-
-       if (file_info == NULL)
-               return NULL;
-
-       mime_type = g_strdup (g_file_info_get_content_type (file_info));
-       g_object_unref (file_info);
-
-       return mime_type;
-}
-
-static gchar *
-get_mime_type_from_data (const gchar *uri, GError **error)
-{
-       GFile            *file;
-       GFileInputStream *input_stream;
-       gssize            size_read;
-       guchar            buffer[1024];
-
-       file = g_file_new_for_uri (uri);
-       
-       input_stream = g_file_read (file, NULL, error);
-       if (!input_stream) {
-               g_object_unref (file);
-               return NULL;
-       }
-
-       size_read = g_input_stream_read (G_INPUT_STREAM (input_stream),
-                                        buffer, 1024, NULL, NULL);
-       g_input_stream_close (G_INPUT_STREAM (input_stream), NULL, error);
-
-       g_object_unref (file);
-
-       if (size_read == -1)
-               return NULL;
-
-       return g_content_type_guess (NULL, /* no filename */
-                                    buffer, 1024,
-                                    NULL);
-}
-
 static EvDocument *
 get_document_from_uri (const char        *uri,
-                      gboolean           slow,
+                      gboolean           fast,
                       EvCompressionType *compression,
                       GError           **error)
 {
@@ -167,9 +115,7 @@ get_document_from_uri (const char        *uri,
 
        *compression = EV_COMPRESSION_NONE;
 
-       mime_type = slow ?
-               get_mime_type_from_data (uri, error) :
-               get_mime_type_from_uri (uri, error);
+       mime_type = ev_file_get_mime_type (uri, fast, error);
 
        if (mime_type == NULL) {
                g_free (mime_type);
@@ -231,7 +177,7 @@ ev_document_factory_get_document (const char *uri, GError **error)
        EvCompressionType compression;
        gchar *uri_unc = NULL;
 
-       document = get_document_from_uri (uri, FALSE, &compression, error);
+       document = get_document_from_uri (uri, TRUE, &compression, error);
        if (*error == NULL) {
                uri_unc = ev_file_uncompress (uri, compression, error);
                if (uri_unc) {
@@ -271,7 +217,7 @@ ev_document_factory_get_document (const char *uri, GError **error)
 
        uri_unc = NULL;
 
-       document = get_document_from_uri (uri, TRUE, &compression, error);
+       document = get_document_from_uri (uri, FALSE, &compression, error);
 
        if (*error != NULL) {
                return NULL;
index 45eb3ecbd2e6252929aede8bd14c846a33084400..34d24f0c4d17eb033dc6727a522e2d39acf68b08 100644 (file)
@@ -232,6 +232,66 @@ ev_xfer_uri_simple (const char *from,
 
 }
 
+static gchar *
+get_mime_type_from_uri (const gchar *uri, GError **error)
+{
+       GFile     *file;
+       GFileInfo *file_info;
+       gchar     *mime_type;
+
+       file = g_file_new_for_uri (uri);
+       file_info = g_file_query_info (file,
+                                      G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
+                                      0, NULL, error);
+       g_object_unref (file);
+
+       if (file_info == NULL)
+               return NULL;
+
+       mime_type = g_strdup (g_file_info_get_content_type (file_info));
+       g_object_unref (file_info);
+
+       return mime_type;
+}
+
+static gchar *
+get_mime_type_from_data (const gchar *uri, GError **error)
+{
+       GFile            *file;
+       GFileInputStream *input_stream;
+       gssize            size_read;
+       guchar            buffer[1024];
+
+       file = g_file_new_for_uri (uri);
+       
+       input_stream = g_file_read (file, NULL, error);
+       if (!input_stream) {
+               g_object_unref (file);
+               return NULL;
+       }
+
+       size_read = g_input_stream_read (G_INPUT_STREAM (input_stream),
+                                        buffer, 1024, NULL, NULL);
+       g_input_stream_close (G_INPUT_STREAM (input_stream), NULL, error);
+
+       g_object_unref (file);
+
+       if (size_read == -1)
+               return NULL;
+
+       return g_content_type_guess (NULL, /* no filename */
+                                    buffer, 1024,
+                                    NULL);
+}
+
+gchar *
+ev_file_get_mime_type (const gchar *uri,
+                      gboolean     fast,
+                      GError     **error)
+{
+       return fast ? get_mime_type_from_uri (uri, error) : get_mime_type_from_data (uri, error);
+}
+
 /* Compressed files support */
 #define BZIPCOMMAND "bzip2"
 #define GZIPCOMMAND "gzip"
index cd86320ed804abf3faa149b8a4c0deb67f6b9970..833eade90ebf74f40432a62f4f3eb311ce8206b9 100644 (file)
@@ -50,6 +50,10 @@ gboolean     ev_xfer_uri_simple       (const char        *from,
                                       const char        *to,
                                       GError           **error);
 
+gchar       *ev_file_get_mime_type    (const gchar       *uri,
+                                      gboolean           fast,
+                                      GError           **error);
+
 gchar       *ev_file_uncompress       (const gchar       *uri,
                                       EvCompressionType  type,
                                       GError           **error);