X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=libdocument%2Fev-document-factory.c;h=a920be60bcfe06e2a051866700212b29160a7639;hb=13948dea9658bd64604cd71d8913583afb88776a;hp=c7732d8bfb9f9e85b81265b7d0434baf7822425d;hpb=f9d5f279f25fefc2c33c0bb75ee45bc26934715f;p=evince.git diff --git a/libdocument/ev-document-factory.c b/libdocument/ev-document-factory.c index c7732d8b..a920be60 100644 --- a/libdocument/ev-document-factory.c +++ b/libdocument/ev-document-factory.c @@ -23,6 +23,7 @@ #endif #include + #include #include #include @@ -104,7 +105,7 @@ get_compression_from_mime_type (const gchar *mime_type) } static gchar * -get_mime_type_from_uri (const gchar *uri) +get_mime_type_from_uri (const gchar *uri, GError **error) { GFile *file; GFileInfo *file_info; @@ -113,7 +114,7 @@ get_mime_type_from_uri (const gchar *uri) file = g_file_new_for_uri (uri); file_info = g_file_query_info (file, G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE, - 0, NULL, NULL); + 0, NULL, error); g_object_unref (file); if (file_info == NULL) @@ -126,7 +127,7 @@ get_mime_type_from_uri (const gchar *uri) } static gchar * -get_mime_type_from_data (const gchar *uri) +get_mime_type_from_data (const gchar *uri, GError **error) { GFile *file; GFileInputStream *input_stream; @@ -135,7 +136,7 @@ get_mime_type_from_data (const gchar *uri) file = g_file_new_for_uri (uri); - input_stream = g_file_read (file, NULL, NULL); + input_stream = g_file_read (file, NULL, error); if (!input_stream) { g_object_unref (file); return NULL; @@ -143,7 +144,7 @@ get_mime_type_from_data (const gchar *uri) 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, NULL); + g_input_stream_close (G_INPUT_STREAM (input_stream), NULL, error); g_object_unref (file); @@ -167,15 +168,18 @@ get_document_from_uri (const char *uri, *compression = EV_COMPRESSION_NONE; mime_type = slow ? - get_mime_type_from_data (uri) : - get_mime_type_from_uri (uri); + get_mime_type_from_data (uri, error) : + get_mime_type_from_uri (uri, error); if (mime_type == NULL) { - g_set_error (error, - EV_DOCUMENT_ERROR, - 0, - _("Unknown MIME Type")); g_free (mime_type); + + if (*error == NULL) { + g_set_error (error, + EV_DOCUMENT_ERROR, + 0, + _("Unknown MIME Type")); + } return NULL; } @@ -188,12 +192,17 @@ get_document_from_uri (const char *uri, #endif /* ENABLE_PIXBUF */ if (document == NULL) { + gchar *mime_desc; + + mime_desc = g_content_type_get_description (mime_type); g_set_error (error, EV_DOCUMENT_ERROR, 0, - _("Unhandled MIME type: “%s”"), mime_type); + _("File type %s (%s) is not supported"), + mime_desc, mime_type); + g_free (mime_desc); g_free (mime_type); - + return NULL; }