summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
Diffstat (limited to 'utils')
-rw-r--r--utils/utils.c33
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;
}