X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;ds=inline;f=backend%2Fcomics%2Fcomics-document.c;h=b0d99ca64069cc74eeb75858c389edf35a2ed297;hb=f51872613abaaa42c716e2fe6a2e4695c529dc4b;hp=b72eef69694290da995598a4802fe71866e8f280;hpb=f4e0f0119c3947ffe278f79b14f54992c2e8e7e2;p=evince.git diff --git a/backend/comics/comics-document.c b/backend/comics/comics-document.c index b72eef69..b0d99ca6 100644 --- a/backend/comics/comics-document.c +++ b/backend/comics/comics-document.c @@ -17,14 +17,18 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include "config.h" + +#include #include #include #include -#include +#include #include "comics-document.h" #include "ev-document-misc.h" #include "ev-document-thumbnails.h" +#include "ev-file-helpers.h" struct _ComicsDocumentClass { @@ -58,11 +62,8 @@ static char** extract_argv (EvDocument *document, gint page); -G_DEFINE_TYPE_WITH_CODE ( - ComicsDocument, comics_document, G_TYPE_OBJECT, +EV_BACKEND_REGISTER_WITH_CODE (ComicsDocument, comics_document, { - G_IMPLEMENT_INTERFACE (EV_TYPE_DOCUMENT, - comics_document_document_iface_init); G_IMPLEMENT_INTERFACE (EV_TYPE_DOCUMENT_THUMBNAILS, comics_document_document_thumbnails_iface_init); } ); @@ -84,6 +85,8 @@ comics_regex_quote (const char *s) case ']': case '*': case '\\': + *d++ = '\\'; + break; case '\'': *d++ = '\''; *d++ = '\\'; @@ -106,7 +109,10 @@ comics_document_load (EvDocument *document, { ComicsDocument *comics_document = COMICS_DOCUMENT (document); GSList *supported_extensions; - gchar *list_files_command = NULL, *std_out, *quoted_file, *mime_type; + GFile *file; + GFileInfo *file_info; + gchar *list_files_command = NULL, *std_out, *quoted_file; + const gchar *mime_type = NULL; gchar **cbr_files; gboolean success; int i, retval; @@ -115,7 +121,14 @@ comics_document_load (EvDocument *document, g_return_val_if_fail (comics_document->archive != NULL, FALSE); quoted_file = g_shell_quote (comics_document->archive); - mime_type = gnome_vfs_get_mime_type (uri); + file = g_file_new_for_uri (uri); + file_info = g_file_query_info (file, + G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE, + 0, NULL, NULL); + if (file_info != NULL) { + mime_type = g_file_info_get_content_type (file_info); + } + g_object_unref (file); /* FIXME, use proper cbr/cbz mime types once they're * included in shared-mime-info */ @@ -133,6 +146,7 @@ comics_document_load (EvDocument *document, comics_document->regex_arg = TRUE; } + g_object_unref (file_info); g_free (quoted_file); /* Get list of files in archive */ @@ -141,14 +155,12 @@ comics_document_load (EvDocument *document, g_free (list_files_command); if (!success) { - g_free (mime_type); return FALSE; } else if (retval != 0) { g_set_error (error, EV_DOCUMENT_ERROR, EV_DOCUMENT_ERROR_INVALID, _("File corrupted.")); - g_free (mime_type); return FALSE; } @@ -174,7 +186,6 @@ comics_document_load (EvDocument *document, } g_free (std_out); - g_free (mime_type); g_strfreev (cbr_files); g_slist_foreach (supported_extensions, (GFunc) g_free, NULL); g_slist_free (supported_extensions);