diff --git a/app/file/file-procedure.c b/app/file/file-procedure.c index 24ed71d9be..13b6d17b22 100644 --- a/app/file/file-procedure.c +++ b/app/file/file-procedure.c @@ -290,16 +290,21 @@ file_proc_find_by_extension (GSList *procs, GSList *p; const gchar *ext; - ext = strrchr (uri, '.'); + ext = file_utils_uri_get_ext (uri); - if (ext) - ext++; + if (! (ext && *ext == '.')) + return NULL; + + ext++; for (p = procs; p; p = g_slist_next (p)) { GimpPlugInProcedure *proc = p->data; GSList *extensions; + if (skip_magic && proc->magics_list) + continue; + for (extensions = proc->extensions_list; ext && extensions; extensions = g_slist_next (extensions)) @@ -307,9 +312,6 @@ file_proc_find_by_extension (GSList *procs, const gchar *p1 = ext; const gchar *p2 = extensions->data; - if (skip_magic && proc->magics_list) - continue; - while (*p1 && *p2) { if (g_ascii_tolower (*p1) != g_ascii_tolower (*p2)) diff --git a/app/file/file-utils.c b/app/file/file-utils.c index a50fec592a..32b3f5f1a0 100644 --- a/app/file/file-utils.c +++ b/app/file/file-utils.c @@ -43,12 +43,10 @@ #include "gimp-intl.h" -static gchar * file_utils_unescape_uri (const gchar *escaped, - gint len, - const gchar *illegal_escaped_characters, - gboolean ascii_must_not_be_escaped); -static const gchar *file_utils_get_ext_start (const gchar *uri); - +static gchar * file_utils_unescape_uri (const gchar *escaped, + gint len, + const gchar *illegal_escaped_characters, + gboolean ascii_must_not_be_escaped); gboolean @@ -237,8 +235,8 @@ gchar * file_utils_uri_with_new_ext (const gchar *uri, const gchar *ext_uri) { - const gchar *uri_ext = file_utils_get_ext_start (uri); - const gchar *ext_uri_ext = ext_uri ? file_utils_get_ext_start (ext_uri) : NULL; + const gchar *uri_ext = file_utils_uri_get_ext (uri); + const gchar *ext_uri_ext = ext_uri ? file_utils_uri_get_ext (ext_uri) : NULL; gchar *uri_without_ext = g_strndup (uri, uri_ext - uri); gchar *ret = g_strconcat (uri_without_ext, ext_uri_ext, NULL); g_free (uri_without_ext); @@ -247,17 +245,17 @@ file_utils_uri_with_new_ext (const gchar *uri, /** - * file_utils_get_ext_start: + * file_utils_uri_get_ext: * @uri: * - * Returns the position of the extension (after the .) for an URI. If + * Returns the position of the extension (including the .) for an URI. If * there is no extension the returned position is right after the * string, at the terminating NULL character. * * Returns: **/ -static const gchar * -file_utils_get_ext_start (const gchar *uri) +const gchar * +file_utils_uri_get_ext (const gchar *uri) { const gchar *ext = NULL; int uri_len = strlen (uri); diff --git a/app/file/file-utils.h b/app/file/file-utils.h index 3ecd6f8459..c2ef7fc515 100644 --- a/app/file/file-utils.h +++ b/app/file/file-utils.h @@ -24,26 +24,27 @@ #include -gboolean file_utils_filename_is_uri (const gchar *filename, - GError **error); -gchar * file_utils_filename_to_uri (Gimp *gimp, - const gchar *filename, - GError **error); -gchar * file_utils_any_to_uri (Gimp *gimp, - const gchar *filename_or_uri, - GError **error); -gchar * file_utils_filename_from_uri (const gchar *uri); -gchar * file_utils_uri_with_new_ext (const gchar *uri, - const gchar *uri_with_ext); +gboolean file_utils_filename_is_uri (const gchar *filename, + GError **error); +gchar * file_utils_filename_to_uri (Gimp *gimp, + const gchar *filename, + GError **error); +gchar * file_utils_any_to_uri (Gimp *gimp, + const gchar *filename_or_uri, + GError **error); +gchar * file_utils_filename_from_uri (const gchar *uri); +gchar * file_utils_uri_with_new_ext (const gchar *uri, + const gchar *uri_with_ext); +const gchar * file_utils_uri_get_ext (const gchar *uri); -gchar * file_utils_uri_to_utf8_filename (const gchar *uri); +gchar * file_utils_uri_to_utf8_filename (const gchar *uri); -gchar * file_utils_uri_display_basename (const gchar *uri); -gchar * file_utils_uri_display_name (const gchar *uri); +gchar * file_utils_uri_display_basename (const gchar *uri); +gchar * file_utils_uri_display_name (const gchar *uri); -GdkPixbuf * file_utils_load_thumbnail (const gchar *filename); -gboolean file_utils_save_thumbnail (GimpImage *image, - const gchar *filename); +GdkPixbuf * file_utils_load_thumbnail (const gchar *filename); +gboolean file_utils_save_thumbnail (GimpImage *image, + const gchar *filename); #endif /* __FILE_UTILS_H__ */