summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Winship <danw@gnome.org>2009-12-18 12:34:47 +0100
committerDan Winship <danw@gnome.org>2009-12-18 12:34:47 +0100
commit3d1662144df8e98619c98481d59f695598ec5f96 (patch)
tree453666623cd326e447d3b2d7d33d7e1fd3fce3a7
parentaba689f9b10b034d398847d4d45aa026213db1eb (diff)
downloadlibsoup-3d1662144df8e98619c98481d59f695598ec5f96.tar.gz
[SoupURI] add a bit of ftp URI support
-rw-r--r--libsoup/soup-uri.c14
-rw-r--r--libsoup/soup-uri.h5
2 files changed, 18 insertions, 1 deletions
diff --git a/libsoup/soup-uri.c b/libsoup/soup-uri.c
index 8cb49fd6..ffc4f1db 100644
--- a/libsoup/soup-uri.c
+++ b/libsoup/soup-uri.c
@@ -96,6 +96,8 @@ static char *uri_decoded_copy (const char *str, int length);
static char *uri_normalized_copy (const char *str, int length, const char *unescape_extra, gboolean fixup);
gpointer _SOUP_URI_SCHEME_HTTP, _SOUP_URI_SCHEME_HTTPS;
+gpointer _SOUP_URI_SCHEME_FTP;
+gpointer _SOUP_URI_SCHEME_FILE, _SOUP_URI_SCHEME_DATA;
static inline const char *
soup_uri_get_scheme (const char *scheme, int len)
@@ -122,6 +124,8 @@ soup_scheme_default_port (const char *scheme)
return 80;
else if (scheme == SOUP_URI_SCHEME_HTTPS)
return 443;
+ else if (scheme == SOUP_URI_SCHEME_FTP)
+ return 21;
else
return 0;
}
@@ -358,6 +362,13 @@ soup_uri_new_with_base (SoupURI *base, const char *uri_string)
}
}
+ if (uri->scheme == SOUP_URI_SCHEME_FTP) {
+ if (!uri->host) {
+ soup_uri_free (uri);
+ return NULL;
+ }
+ }
+
if (!uri->port)
uri->port = soup_scheme_default_port (uri->scheme);
if (!uri->path)
@@ -745,7 +756,8 @@ gboolean
soup_uri_uses_default_port (SoupURI *uri)
{
g_return_val_if_fail (uri->scheme == SOUP_URI_SCHEME_HTTP ||
- uri->scheme == SOUP_URI_SCHEME_HTTPS, FALSE);
+ uri->scheme == SOUP_URI_SCHEME_HTTPS ||
+ uri->scheme == SOUP_URI_SCHEME_FTP, FALSE);
return uri->port == soup_scheme_default_port (uri->scheme);
}
diff --git a/libsoup/soup-uri.h b/libsoup/soup-uri.h
index 21e465de..67a05802 100644
--- a/libsoup/soup-uri.h
+++ b/libsoup/soup-uri.h
@@ -33,7 +33,12 @@ GType soup_uri_get_type (void);
#define SOUP_URI_SCHEME_HTTP _SOUP_ATOMIC_INTERN_STRING (_SOUP_URI_SCHEME_HTTP, "http")
#define SOUP_URI_SCHEME_HTTPS _SOUP_ATOMIC_INTERN_STRING (_SOUP_URI_SCHEME_HTTPS, "https")
+#define SOUP_URI_SCHEME_FTP _SOUP_ATOMIC_INTERN_STRING (_SOUP_URI_SCHEME_HTTP, "ftp")
+#define SOUP_URI_SCHEME_FILE _SOUP_ATOMIC_INTERN_STRING (_SOUP_URI_SCHEME_HTTP, "file")
+#define SOUP_URI_SCHEME_DATA _SOUP_ATOMIC_INTERN_STRING (_SOUP_URI_SCHEME_HTTPS, "data")
extern gpointer _SOUP_URI_SCHEME_HTTP, _SOUP_URI_SCHEME_HTTPS;
+extern gpointer _SOUP_URI_SCHEME_FTP;
+extern gpointer _SOUP_URI_SCHEME_FILE, _SOUP_URI_SCHEME_DATA;
SoupURI *soup_uri_new_with_base (SoupURI *base,
const char *uri_string);