Sun, 20 Apr 2025 13:09:03 +0200
add util_url_encode function, make sn parameter optional for util_url_decode
| libidav/utils.c | file | annotate | diff | comparison | revisions | |
| libidav/utils.h | file | annotate | diff | comparison | revisions |
--- a/libidav/utils.c Mon Apr 14 22:53:43 2025 +0200 +++ b/libidav/utils.c Sun Apr 20 13:09:03 2025 +0200 @@ -348,10 +348,49 @@ return path; } +char* util_url_encode(DavSession *sn, const char *url) { + CURL *handle = sn ? sn->handle : NULL; +#if LIBCURL_VERSION_NUM < 0x075200 + int cleanup_handle = 0; + if(!handle) { + handle = curl_easy_init(); + cleanup_handle = 1; + } +#endif + + char *esc = curl_easy_escape(handle, url, strlen(url)); + char *ret = esc ? strdup(esc) : NULL; + curl_free(esc); + +#if LIBCURL_VERSION_NUM < 0x075200 + if(cleanup_handle) { + curl_easy_cleanup(handle); + } +#endif + + return ret; +} + char* util_url_decode(DavSession *sn, const char *url) { - char *unesc = curl_easy_unescape(sn->handle, url, strlen(url), NULL); - char *ret = strdup(unesc); + CURL *handle = sn ? sn->handle : NULL; +#if LIBCURL_VERSION_NUM < 0x075200 + int cleanup_handle = 0; + if(!handle) { + handle = curl_easy_init(); + cleanup_handle = 1; + } +#endif + + char *unesc = curl_easy_unescape(handle, url, strlen(url), NULL); + char *ret = unesc ? strdup(unesc) : NULL; curl_free(unesc); + +#if LIBCURL_VERSION_NUM < 0x075200 + if(cleanup_handle) { + curl_easy_cleanup(handle); + } +#endif + return ret; }
--- a/libidav/utils.h Mon Apr 14 22:53:43 2025 +0200 +++ b/libidav/utils.h Sun Apr 20 13:09:03 2025 +0200 @@ -76,6 +76,7 @@ cxstring util_url_base_s(cxstring url); const char* util_url_path(const char *url); cxstring util_url_path_s(cxstring url); +char* util_url_encode(DavSession *sn, const char *url); char* util_url_decode(DavSession *sn, const char *url); const char* util_resource_name(const char *url); const char* util_resource_name_c(const char *url, char pathseparator);