diff options
Diffstat (limited to 'utils')
-rw-r--r-- | utils/utils.c | 33 |
1 files changed, 17 insertions, 16 deletions
diff --git a/utils/utils.c b/utils/utils.c index 1487ac1c7..e8a8fbabc 100644 --- a/utils/utils.c +++ b/utils/utils.c @@ -217,27 +217,28 @@ fail: return 0; } - - -char *get_host_from_url (char *url) { - char *host = xcalloc(strlen(url)+10, sizeof(char)); - int i; - - i = strspn(url, "abcdefghijklmnopqrstuvwxyz"); - if (url[i] == ':') { - strcpy(host, url); - i += 3; - } +/** + * Extract the host name from a url. + * + * \param url an absolute URL + * \return a new string, or 0 in case of error + */ - for (; host[i] != 0 && host[i] != '/'; i++) - host[i] = tolower(host[i]); +char *get_host_from_url(char *url) +{ + char *host = 0; + uri_t *uri; - host[i] = '/'; - host[i+1] = 0; + uri = uri_alloc(url, strlen(url)); + if (!uri) + return 0; + if (uri->host) + host = xstrdup(uri->host); + uri_free(uri); - return host; + return host; } |