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=64eaabaa25d52ac37487db5cf3367ab05c6dbca9;hb=f343927df4325959193353c52cff1ea4b20b2286;hp=962f42a604250c39857e9df399ed0a29ab4cba36;hpb=0b94e1fcf335f0131e5ff81cbe87b2e9ac343ab6;p=evince.git diff --git a/libdocument/ev-document-factory.c b/libdocument/ev-document-factory.c index 962f42a6..64eaabaa 100644 --- a/libdocument/ev-document-factory.c +++ b/libdocument/ev-document-factory.c @@ -104,7 +104,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 +113,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 +126,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 +135,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; @@ -167,35 +167,34 @@ 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); return NULL; } + document = ev_backends_manager_get_document (mime_type); + #ifdef ENABLE_PIXBUF - if (mime_type_supported_by_gdk_pixbuf (mime_type)) + if (!document && mime_type_supported_by_gdk_pixbuf (mime_type)) document = ev_backends_manager_get_document ("image/*"); - else - document = ev_backends_manager_get_document (mime_type); -#else - document = ev_backends_manager_get_document (mime_type); #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; }