diff options
Diffstat (limited to 'lib/ephy-string.c')
-rw-r--r-- | lib/ephy-string.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/lib/ephy-string.c b/lib/ephy-string.c index dbda76275..daeac7d2b 100644 --- a/lib/ephy-string.c +++ b/lib/ephy-string.c @@ -191,3 +191,55 @@ ephy_string_double_underscores (const char *string) return escaped; } + +/* taken from libgnomevfs/gnome-vfs-uri.c */ +GList* +ephy_string_parse_uri_list (const gchar* uri_list) +{ + /* Note that this is mostly very stolen from old libgnome/gnome-mime.c */ + + const gchar *p, *q; + gchar *retval; + GList *result = NULL; + + g_return_val_if_fail (uri_list != NULL, NULL); + + p = uri_list; + + /* We don't actually try to validate the URI according to RFC + * 2396, or even check for allowed characters - we just ignore + * comments and trim whitespace off the ends. We also + * allow LF delimination as well as the specified CRLF. + */ + while (p != NULL) { + if (*p != '#') { + while (g_ascii_isspace (*p)) + p++; + + q = p; + while ((*q != '\0') + && (*q != '\n') + && (*q != '\r')) + q++; + + if (q > p) { + q--; + while (q > p + && g_ascii_isspace (*q)) + q--; + + retval = g_malloc (q - p + 2); + strncpy (retval, p, q - p + 1); + retval[q - p + 1] = '\0'; + + if (retval[0] != '\0') + result = g_list_prepend (result, retval); + } + } + p = strchr (p, '\n'); + if (p != NULL) + p++; + } + + return g_list_reverse (result); +} |