The curl_easy_escape
function of curl takes a CURL*
as its first parameter, as curl’s documentation indicates:
char *curl_easy_escape(CURL *curl, const char *string, int length);
↑
I don’t understand what this parameter is used for, since escaping a URL shouldn’t need a curl handle. In fact, curl’s source code ignores this parameter.
Is it safe to simply use NULL
for this parameter if I need to escape an URL without having a curl handle beforehand, as the implementation of curl_escape
does?
CodePudding user response:
It is for backward ABI compatibility. CURL *curl
was used 6 years ago: curl_easy_escape, Curl_convert_to_network.
It was always and is now safe to pass NULL
: curl_escape, curl_easy_escape.
The history is interesting. char *curl_unescape(const char *string, int length)
was the first function. Later char *curl_easy_escape(CURL *handle, const char *string, int inlength)
was introduced for supporting all extended ASCII charsets with help of iconv
. And finally curl_easy_escape
code was almost rollbacked to curl_unescape
and stopped using CURL *handle
.