examples: improve global init, error checks and returning errors

- add `curl_global_init()` and `curl_global_cleanup()` where missing.
- check the result of `curl_global_init()` where missing.
- return the last curl error from `main()`.
- drop Win32-specific socket initialization in favor of `curl_global_init()`.
- rename some outliers to `res` for curl result code.
- fix cleanup in some error cases.

Inspired by Joshua's report on examples.

Closes #19053
This commit is contained in:
Viktor Szakats 2025-10-13 16:30:18 +02:00
parent 3049c8e0a0
commit 4c7507daf9
No known key found for this signature in database
GPG key ID: B5ABD165E2AEF201
129 changed files with 990 additions and 485 deletions

View file

@ -226,13 +226,16 @@ static int cb_socket(CURL *easy, curl_socket_t s, int action,
int main(int argc, char **argv)
{
CURLcode res;
struct datauv uv = { 0 };
int running_handles;
if(argc <= 1)
return 0;
curl_global_init(CURL_GLOBAL_ALL);
res = curl_global_init(CURL_GLOBAL_ALL);
if(res)
return (int)res;
uv.loop = uv_default_loop();
uv_timer_init(uv.loop, &uv.timeout);
@ -251,6 +254,7 @@ int main(int argc, char **argv)
curl_multi_socket_action(uv.multi, CURL_SOCKET_TIMEOUT, 0, &running_handles);
uv_run(uv.loop, UV_RUN_DEFAULT);
curl_multi_cleanup(uv.multi);
curl_global_cleanup();
curl_global_cleanup();