diff options
Diffstat (limited to 'media-gfx/gimp/files/gimp-2.6.11-file-uri.patch')
-rw-r--r-- | media-gfx/gimp/files/gimp-2.6.11-file-uri.patch | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/media-gfx/gimp/files/gimp-2.6.11-file-uri.patch b/media-gfx/gimp/files/gimp-2.6.11-file-uri.patch new file mode 100644 index 000000000000..2d3f161e064b --- /dev/null +++ b/media-gfx/gimp/files/gimp-2.6.11-file-uri.patch @@ -0,0 +1,79 @@ +--- plug-ins/file-uri/uri-backend-libcurl.c.orig 2011-09-01 09:06:13.307741499 -0500 ++++ plug-ins/file-uri/uri-backend-libcurl.c 2011-09-01 09:09:09.066152187 -0500 +@@ -62,7 +62,7 @@ + + vinfo = curl_version_info (CURLVERSION_NOW); + +- protocols = g_string_new ("http:,ftp:"); ++ protocols = g_string_new ("http:,ftp:,gopher:"); + + if (vinfo->features & CURL_VERSION_SSL) + { +@@ -153,6 +153,11 @@ + CURL *curl_handle; + CURLcode result; + gint response_code; ++ gchar *eff_url = NULL; ++ gchar *proto = NULL; ++ gboolean is_http = FALSE; ++ gboolean is_ftp = FALSE; ++ gboolean is_gopher = FALSE; + + gimp_progress_init (_("Connecting to server")); + +@@ -194,13 +199,52 @@ + + curl_easy_getinfo (curl_handle, CURLINFO_RESPONSE_CODE, &response_code); + +- if (response_code != 200) ++ /* protocol could be not specified in provided uri ++ get complete url guessed by curl */ ++ curl_easy_getinfo (curl_handle, CURLINFO_EFFECTIVE_URL, &eff_url); ++ ++ /* detect uri protocol */ ++ if (! g_ascii_strncasecmp (eff_url, "http://", 7)) ++ { ++ is_http = TRUE; ++ proto = "HTTP"; ++ } ++ else ++ if (! g_ascii_strncasecmp (eff_url, "https://", 8)) ++ { ++ is_http = TRUE; ++ proto = "HTTPS"; ++ } ++ else ++ if (! g_ascii_strncasecmp (eff_url, "ftp://", 6)) ++ { ++ is_ftp = TRUE; ++ proto = "FTP"; ++ } ++ else ++ if (! g_ascii_strncasecmp (eff_url, "ftps://", 7)) ++ { ++ is_ftp = TRUE; ++ proto = "FTPS"; ++ } ++ else ++ if (! g_ascii_strncasecmp (eff_url ,"gopher://", 9)) ++ { ++ is_gopher = TRUE; ++ proto = "GOPHER"; ++ } ++ else ++ { ++ proto = "UNKNOWN"; ++ } ++ ++ if (! ((is_http && response_code == 200) || (is_ftp && response_code == 226) || (is_gopher))) + { + fclose (out_file); + g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED, +- _("Opening '%s' for reading resulted in HTTP " ++ _("Opening '%s' for reading resulted in %s " + "response code: %d"), +- uri, response_code); ++ uri, proto, response_code); + curl_easy_cleanup (curl_handle); + return FALSE; + } |