diff -r 29d544c3c2b8 -r 05647e862a17 libidav/utils.c --- a/libidav/utils.c Sun Sep 17 13:51:01 2023 +0200 +++ b/libidav/utils.c Sat Sep 30 16:33:47 2023 +0200 @@ -281,7 +281,7 @@ } } -char* util_url_base_s(cxstring url) { +cxstring util_url_base_s(cxstring url) { size_t i = 0; if(url.length > 0) { int slmax; @@ -303,12 +303,11 @@ } } } - cxstring server = cx_strsubsl(url, 0, i); - return cx_strdup(server).ptr; + return cx_strsubsl(url, 0, i); } -char* util_url_base(char *url) { - return util_url_base_s(cx_str(url)); +char* util_url_base(const char *url) { + return cx_strdup(util_url_base_s(cx_str(url))).ptr; } #ifdef _WIN32 @@ -316,30 +315,30 @@ #endif const char* util_url_path(const char *url) { - const char *path = NULL; - size_t len = strlen(url); + return util_url_path_s(cx_str(url)).ptr; +} + +cxstring util_url_path_s(cxstring url) { + cxstring path = { "", 0 }; int slashcount = 0; int slmax; - if(len > 7 && !strncasecmp(url, "http://", 7)) { + if(url.length > 7 && !strncasecmp(url.ptr, "http://", 7)) { slmax = 3; - } else if(len > 8 && !strncasecmp(url, "https://", 8)) { + } else if(url.length > 8 && !strncasecmp(url.ptr, "https://", 8)) { slmax = 3; } else { slmax = 1; } char c; - for(int i=0;i