commit 806f4e9f6b3ce9b2b643c016f41654296a784e2b
parent e8b189904e370ed3140d9ba6d482c3e8377a7b1c
Author: sin <sin@2f30.org>
Date: Mon, 21 Dec 2015 15:51:56 +0000
Add parseurl() helper
Diffstat:
2 files changed, 29 insertions(+), 0 deletions(-)
diff --git a/storrent.h b/storrent.h
@@ -75,3 +75,4 @@ void writeall(int, const void *, size_t);
size_t strlcpy(char *, const char *, size_t);
#undef strlcat
size_t strlcat(char *, const char *, size_t);
+char *parseurl(char *, char **, char **, char **);
diff --git a/util.c b/util.c
@@ -249,3 +249,31 @@ strlcat(char *dst, const char *src, size_t dsize)
return(dlen + (src - osrc)); /* count does not include NUL */
}
+
+char *
+parseurl(char *url, char **host, char **port, char **path)
+{
+ char *tmp, *p, *newurl;
+
+ *host = *port = *path = NULL;
+ if (!(newurl = p = strdup(url)))
+ err(1, "strdup");
+ if ((tmp = strstr(p, "://")))
+ p = tmp + 3;
+ if (!*p)
+ return newurl;
+ *host = p;
+ if ((tmp = strchr(p, ':'))) {
+ p = tmp;
+ *p++ = '\0';
+ *port = p;
+ }
+ if (!*p)
+ return newurl;
+ if ((tmp = strchr(p, '/'))) {
+ p = tmp;
+ *p++ = '\0';
+ *path = p;
+ }
+ return newurl;
+}