curl_easy_escape的第一个参数是做什么用的?

What is the first parameter of curl_easy_escape for?

curl的curl_easy_escape函数以一个CURL*作为第一个参数,如curl’s documentation表示:

char *curl_easy_escape(CURL *curl, const char *string, int length);
                           ↑

我不明白这个参数有什么用,因为转义 URL 不需要 curl 句柄。其实curl的源码ignores this parameter.

如果我需要转义一个 URL 而无需像 the implementation of curl_escape 那样事先使用 curl 句柄,那么简单地使用 NULL 作为此参数是否安全?

这是为了向后的 ABI 兼容性。 CURL *curl 6年前使用过:curl_easy_escape, Curl_convert_to_network.

通过 NULL 过去和现在都是安全的:curl_escape, curl_easy_escape

历史很有趣。 char *curl_unescape(const char *string, int length) 是第一个函数。后来 char *curl_easy_escape(CURL *handle, const char *string, int inlength)iconv 的帮助下被引入以支持所有扩展的 ASCII 字符集。最后 curl_easy_escape 代码几乎回滚到 curl_unescape 并停止使用 CURL *handle