--- a/libidav/utils.c Sat Oct 26 11:32:27 2019 +0200 +++ b/libidav/utils.c Sat Oct 26 12:38:33 2019 +0200 @@ -273,36 +273,37 @@ } } -char* util_url_base(char *url) { - sstr_t u = sstr(url); - int len = u.length; - int slashcount = 0; - int slmax; - if(len > 7 && !strncasecmp(url, "http://", 7)) { - slmax = 3; - } else if(len > 8 && !strncasecmp(url, "https://", 8)) { - slmax = 3; - } else { - slmax = 1; - } - char c; - int i = 0; - for(i=0;i<len;i++) { - c = url[i]; - if(c == '/') { - slashcount++; - if(slashcount == slmax) { - i++; - break; +char* util_url_base_s(sstr_t url) { + size_t i = 0; + if(url.length > 0) { + int slmax; + if(sstrprefix(url, SC("http://"))) { + slmax = 3; + } else if(sstrprefix(url, SC("https://"))) { + slmax = 3; + } else { + slmax = 1; + } + int slashcount = 0; + for(i=0;i<url.length;i++) { + if(url.ptr[i] == '/') { + slashcount++; + if(slashcount == slmax) { + i++; + break; + } } } - } - sstr_t server = sstrsubsl(u, 0, i); - server = sstrdup(server); - return server.ptr; + } + sstr_t server = sstrsubsl(url, 0, i); + return sstrdup(server).ptr; } -char* util_url_path(char *url) { +char* util_url_base(char *url) { + return util_url_base_s(sstr(url)); +} + +char* util_url_path(char *url) { char *path = NULL; size_t len = strlen(url); int slashcount = 0;