summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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.patch79
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;
+ }