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

@ -292,6 +292,7 @@ static int setup(struct input *i, int num, const char *upload)
*/
int main(int argc, char **argv)
{
CURLcode res;
struct input trans[NUM_HANDLES];
CURLM *multi_handle;
int i;
@ -313,12 +314,18 @@ int main(int argc, char **argv)
else
num_transfers = 3;
res = curl_global_init(CURL_GLOBAL_ALL);
if(res)
return (int)res;
/* init a multi stack */
multi_handle = curl_multi_init();
for(i = 0; i < num_transfers; i++) {
if(setup(&trans[i], i, filename))
if(setup(&trans[i], i, filename)) {
curl_global_cleanup();
return 1;
}
/* add the individual transfer */
curl_multi_add_handle(multi_handle, trans[i].hnd);
@ -348,5 +355,7 @@ int main(int argc, char **argv)
curl_easy_cleanup(trans[i].hnd);
}
curl_global_cleanup();
return 0;
}