/* * new_document_for_uri: * @uri: the document URI * @fast: whether to use fast MIME type detection * @compression: a location to store the document's compression type * @error: a #GError location to store an error, or %NULL * * Creates a #EvDocument instance for the document at @uri, using either * fast or slow MIME type detection. If a document could be created, * @compression is filled in with the document's compression type. * On error, %NULL is returned and @error filled in. * * Returns: a new #EvDocument instance, or %NULL on error with @error filled in */ static EvDocument * new_document_for_uri (const char *uri, gboolean fast, EvCompressionType *compression, GError **error) { EvDocument *document = NULL; gchar *mime_type = NULL; *compression = EV_COMPRESSION_NONE; mime_type = ev_file_get_mime_type (uri, fast, error); if (mime_type == NULL) return NULL; document = ev_document_factory_new_document_for_mime_type (mime_type, error); if (document == NULL) return NULL; *compression = get_compression_from_mime_type (mime_type); g_free (mime_type); return document; }
/* * get_document_from_uri: * @uri: the document URI * @fast: whether to use fast MIME type detection * @compression: a location to store the document's compression type * @error: a #GError location to store an error, or %NULL * * Creates a #EvDocument instance for the document at @uri, using either * fast or slow MIME type detection. If a document could be created, * @compression is filled in with the document's compression type. * On error, %NULL is returned and @error filled in. * * Returns: a new #EvDocument instance, or %NULL on error with @error filled in */ static EvDocument * get_document_from_uri (const char *uri, gboolean fast, EvCompressionType *compression, GError **error) { EvDocument *document = NULL; gchar *mime_type = NULL; GError *err = NULL; *compression = EV_COMPRESSION_NONE; mime_type = ev_file_get_mime_type (uri, fast, &err); if (mime_type == NULL) { g_free (mime_type); if (err == NULL) { g_set_error_literal (error, EV_DOCUMENT_ERROR, EV_DOCUMENT_ERROR_INVALID, _("Unknown MIME Type")); } else { g_propagate_error (error, err); } return NULL; } document = ev_backends_manager_get_document (mime_type); #ifdef ENABLE_PIXBUF if (!document && mime_type_supported_by_gdk_pixbuf (mime_type)) document = ev_backends_manager_get_document ("image/*"); #endif /* ENABLE_PIXBUF */ if (document == NULL) { gchar *content_type, *mime_desc = NULL; content_type = g_content_type_from_mime_type (mime_type); if (content_type) mime_desc = g_content_type_get_description (content_type); g_set_error (error, EV_DOCUMENT_ERROR, EV_DOCUMENT_ERROR_INVALID, _("File type %s (%s) is not supported"), mime_desc ? mime_desc : "-", mime_type); g_free (mime_desc); g_free (content_type); g_free (mime_type); return NULL; } *compression = get_compression_from_mime_type (mime_type); g_free (mime_type); return document; }