]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
examples: improve global init, error checks and returning errors
authorViktor Szakats <commit@vsz.me>
Mon, 13 Oct 2025 14:30:18 +0000 (16:30 +0200)
committerViktor Szakats <commit@vsz.me>
Mon, 13 Oct 2025 21:02:05 +0000 (23:02 +0200)
- 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

129 files changed:
docs/examples/10-at-a-time.c
docs/examples/address-scope.c
docs/examples/altsvc.c
docs/examples/anyauthput.c
docs/examples/block_ip.c
docs/examples/cacertinmem.c
docs/examples/certinfo.c
docs/examples/chkspeed.c
docs/examples/connect-to.c
docs/examples/cookie_interface.c
docs/examples/crawler.c
docs/examples/debug.c
docs/examples/default-scheme.c
docs/examples/ephiperfifo.c
docs/examples/evhiperfifo.c
docs/examples/externalsocket.c
docs/examples/fileupload.c
docs/examples/ftp-delete.c
docs/examples/ftp-wildcard.c
docs/examples/ftpget.c
docs/examples/ftpgetinfo.c
docs/examples/ftpgetresp.c
docs/examples/ftpsget.c
docs/examples/ftpupload.c
docs/examples/ftpuploadfrommem.c
docs/examples/ftpuploadresume.c
docs/examples/getinfo.c
docs/examples/getinmemory.c
docs/examples/getredirect.c
docs/examples/getreferrer.c
docs/examples/ghiper.c
docs/examples/headerapi.c
docs/examples/hiperfifo.c
docs/examples/hsts-preload.c
docs/examples/htmltidy.c
docs/examples/htmltitle.cpp
docs/examples/http-options.c
docs/examples/http-post.c
docs/examples/http2-download.c
docs/examples/http2-pushinmemory.c
docs/examples/http2-serverpush.c
docs/examples/http2-upload.c
docs/examples/http3-present.c
docs/examples/http3.c
docs/examples/httpcustomheader.c
docs/examples/httpput-postfields.c
docs/examples/httpput.c
docs/examples/https.c
docs/examples/imap-append.c
docs/examples/imap-authzid.c
docs/examples/imap-copy.c
docs/examples/imap-create.c
docs/examples/imap-delete.c
docs/examples/imap-examine.c
docs/examples/imap-fetch.c
docs/examples/imap-list.c
docs/examples/imap-lsub.c
docs/examples/imap-multi.c
docs/examples/imap-noop.c
docs/examples/imap-search.c
docs/examples/imap-ssl.c
docs/examples/imap-store.c
docs/examples/imap-tls.c
docs/examples/interface.c
docs/examples/ipv6.c
docs/examples/keepalive.c
docs/examples/localport.c
docs/examples/log_failed_transfers.c
docs/examples/maxconnects.c
docs/examples/multi-app.c
docs/examples/multi-debugcallback.c
docs/examples/multi-double.c
docs/examples/multi-event.c
docs/examples/multi-formadd.c
docs/examples/multi-legacy.c
docs/examples/multi-post.c
docs/examples/multi-single.c
docs/examples/multi-uv.c
docs/examples/multithread.c
docs/examples/netrc.c
docs/examples/persistent.c
docs/examples/pop3-authzid.c
docs/examples/pop3-dele.c
docs/examples/pop3-list.c
docs/examples/pop3-multi.c
docs/examples/pop3-noop.c
docs/examples/pop3-retr.c
docs/examples/pop3-ssl.c
docs/examples/pop3-stat.c
docs/examples/pop3-tls.c
docs/examples/pop3-top.c
docs/examples/pop3-uidl.c
docs/examples/post-callback.c
docs/examples/postinmemory.c
docs/examples/postit2-formadd.c
docs/examples/postit2.c
docs/examples/progressfunc.c
docs/examples/protofeats.c
docs/examples/range.c
docs/examples/resolve.c
docs/examples/rtsp-options.c
docs/examples/sendrecv.c
docs/examples/sepheaders.c
docs/examples/sessioninfo.c
docs/examples/sftpget.c
docs/examples/sftpuploadresume.c
docs/examples/shared-connection-cache.c
docs/examples/simple.c
docs/examples/simplepost.c
docs/examples/simplessl.c
docs/examples/smooth-gtk-thread.c
docs/examples/smtp-authzid.c
docs/examples/smtp-expn.c
docs/examples/smtp-mail.c
docs/examples/smtp-mime.c
docs/examples/smtp-multi.c
docs/examples/smtp-ssl.c
docs/examples/smtp-tls.c
docs/examples/smtp-vrfy.c
docs/examples/synctime.c
docs/examples/threaded-ssl.c
docs/examples/unixsocket.c
docs/examples/url2file.c
docs/examples/urlapi.c
docs/examples/usercertinmem.c
docs/examples/websocket-cb.c
docs/examples/websocket-updown.c
docs/examples/websocket.c
docs/examples/xmlstream.c

index 38a0f24ac62f28455059dbee9cb827a410cad2d2..48e0030040c5d791ec095432d9cb8e3402a403aa 100644 (file)
@@ -109,7 +109,10 @@ int main(void)
   int msgs_left = -1;
   int left = 0;
 
-  curl_global_init(CURL_GLOBAL_ALL);
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   cm = curl_multi_init();
 
   /* Limit the amount of simultaneous connections curl should allow: */
index 43e9cf8986276c2a0325e79dc6a45c4cb0f0b1a2..82607e2df50e97a9402fa65fe228155391d92717 100644 (file)
@@ -37,7 +37,10 @@ int main(void)
 #if !defined(_WIN32) && !defined(MSDOS) && !defined(__AMIGA__)
   /* Windows/MS-DOS users need to find how to use if_nametoindex() */
   CURL *curl;
-  CURLcode res;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -57,6 +60,9 @@ int main(void)
     /* always cleanup */
     curl_easy_cleanup(curl);
   }
-#endif
+  curl_global_cleanup();
+  return (int)res;
+#else
   return 0;
+#endif
 }
index 8a1ae8ed3b4065d15b32a7417a63b3c364ede5a8..4021c90002e9ce0d324fd0e548e64b84e12d917b 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -54,5 +57,6 @@ int main(void)
     /* always cleanup */
     curl_easy_cleanup(curl);
   }
-  return 0;
+  curl_global_cleanup();
+  return (int)res;
 }
index 505d16b217b2744d004661415a1942f17a3164c1..81bb1fb9071d32598cf9992d18f9f2abfcc5535b 100644 (file)
@@ -111,7 +111,11 @@ int main(int argc, char **argv)
 #endif
 
   /* In Windows, this inits the Winsock stuff */
-  curl_global_init(CURL_GLOBAL_ALL);
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res) {
+    fclose(fp);
+    return (int)res;
+  }
 
   /* get a curl handle */
   curl = curl_easy_init();
@@ -161,5 +165,5 @@ int main(int argc, char **argv)
   fclose(fp); /* close the local file */
 
   curl_global_cleanup();
-  return 0;
+  return (int)res;
 }
index 181cd8270db722bbf47c8a5af3a7b098ce27533d..b99fab58c3891c7538ac04d0958713111745fd28 100644 (file)
@@ -301,9 +301,10 @@ int main(void)
   if(!filter)
     return 1;
 
-  if(curl_global_init(CURL_GLOBAL_DEFAULT)) {
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res) {
     free(filter);
-    return 1;
+    return (int)res;
   }
 
   curl = curl_easy_init();
index e552ce5d69cfc43fb6b2c559052eadaf042afe4c..d72dc490018a4451f0166b4f5349688f91feb9bf 100644 (file)
@@ -56,8 +56,6 @@ static size_t writefunction(void *ptr, size_t size, size_t nmemb, void *stream)
 
 static CURLcode sslctx_function(CURL *curl, void *sslctx, void *pointer)
 {
-  CURLcode rv = CURLE_ABORTED_BY_CALLBACK;
-
   /** This example uses two (fake) certificates **/
   /* replace the XXX with the actual CA certificates */
   static const char mypem[] =
@@ -89,14 +87,14 @@ static CURLcode sslctx_function(CURL *curl, void *sslctx, void *pointer)
   (void)pointer;
 
   if(!cts || !cbio) {
-    return rv;
+    return CURLE_ABORTED_BY_CALLBACK;
   }
 
   inf = PEM_X509_INFO_read_bio(cbio, NULL, NULL, NULL);
 
   if(!inf) {
     BIO_free(cbio);
-    return rv;
+    return CURLE_ABORTED_BY_CALLBACK;
   }
 
   for(i = 0; i < sk_X509_INFO_num(inf); i++) {
@@ -112,16 +110,18 @@ static CURLcode sslctx_function(CURL *curl, void *sslctx, void *pointer)
   sk_X509_INFO_pop_free(inf, X509_INFO_free);
   BIO_free(cbio);
 
-  rv = CURLE_OK;
-  return rv;
+  return CURLE_OK;
 }
 
 int main(void)
 {
   CURL *ch;
-  CURLcode rv;
+  CURLcode res;
+
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
-  curl_global_init(CURL_GLOBAL_ALL);
   ch = curl_easy_init();
   curl_easy_setopt(ch, CURLOPT_VERBOSE, 0L);
   curl_easy_setopt(ch, CURLOPT_HEADER, 0L);
@@ -145,8 +145,8 @@ int main(void)
   /* first try: retrieve page without ca certificates -> should fail
    * unless libcurl was built --with-ca-fallback enabled at build-time
    */
-  rv = curl_easy_perform(ch);
-  if(rv == CURLE_OK)
+  res = curl_easy_perform(ch);
+  if(res == CURLE_OK)
     printf("*** transfer succeeded ***\n");
   else
     printf("*** transfer failed ***\n");
@@ -166,13 +166,13 @@ int main(void)
    * "modifications" to the SSL CONTEXT just before link init
    */
   curl_easy_setopt(ch, CURLOPT_SSL_CTX_FUNCTION, sslctx_function);
-  rv = curl_easy_perform(ch);
-  if(rv == CURLE_OK)
+  res = curl_easy_perform(ch);
+  if(res == CURLE_OK)
     printf("*** transfer succeeded ***\n");
   else
     printf("*** transfer failed ***\n");
 
   curl_easy_cleanup(ch);
   curl_global_cleanup();
-  return (int)rv;
+  return (int)res;
 }
index 795be6c3d19db12e9eaac40ebbd49f05a5b96bc4..0443aa42f46cb5702c19848008bb0e03e2e267e3 100644 (file)
@@ -41,7 +41,9 @@ int main(void)
   CURL *curl;
   CURLcode res;
 
-  curl_global_init(CURL_GLOBAL_DEFAULT);
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -83,5 +85,5 @@ int main(void)
 
   curl_global_cleanup();
 
-  return 0;
+  return (int)res;
 }
index 32bd92005d5bb09ec21b6ca8b59137074f544372..d4b2abbab819cb6b04d8874a1fbc5f012d684dec 100644 (file)
@@ -156,7 +156,9 @@ int main(int argc, char *argv[])
   }
 
   /* init libcurl */
-  curl_global_init(CURL_GLOBAL_ALL);
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   /* init the curl session */
   curl_handle = curl_easy_init();
index ad1e304649648af08af631b49bcdf893f66f50c4..253c531c420d69f07897d40621d267a24bc69ccd 100644 (file)
 
 int main(void)
 {
+  struct curl_slist *host;
   CURL *curl;
-  CURLcode res = CURLE_OK;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   /*
     Each single string should be written using the format
@@ -41,8 +45,7 @@ int main(void)
    */
   /* instead of curl.se:443, it resolves and uses example.com:443 but in other
      aspects work as if it still is curl.se */
-  struct curl_slist *host = curl_slist_append(NULL,
-                                              "curl.se:443:example.com:443");
+  host = curl_slist_append(NULL, "curl.se:443:example.com:443");
 
   curl = curl_easy_init();
   if(curl) {
@@ -66,5 +69,7 @@ int main(void)
 
   curl_slist_free_all(host);
 
+  curl_global_cleanup();
+
   return (int)res;
 }
index cb68977121c1de0b6e4b758daebd29fd6298ae29..cebbd3cdcff034606d626f60743a55678e864bf6 100644 (file)
@@ -72,7 +72,10 @@ main(void)
   CURL *curl;
   CURLcode res;
 
-  curl_global_init(CURL_GLOBAL_ALL);
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   curl = curl_easy_init();
   if(curl) {
     char nline[512];
index 6b737652d40ef74bbe0143d34f424141e7006ca7..a7ca5fa2fe40c185f0c247dd21a1ee5943b26801 100644 (file)
@@ -182,10 +182,14 @@ int main(void)
   int pending;
   int complete;
   int still_running;
+  CURLcode res;
+
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   signal(SIGINT, sighandler);
   LIBXML_TEST_VERSION
-  curl_global_init(CURL_GLOBAL_DEFAULT);
   multi_handle = curl_multi_init();
   curl_multi_setopt(multi_handle, CURLMOPT_MAX_TOTAL_CONNECTIONS, max_con);
   curl_multi_setopt(multi_handle, CURLMOPT_MAX_HOST_CONNECTIONS, 6L);
index 5303c833f5ea66dcd67244f4e91b12b2dc7f622a..85fdea95d32937db6a92e986e47b77f1d320f29d 100644 (file)
@@ -128,6 +128,10 @@ int main(void)
   CURLcode res;
   struct data config;
 
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   config.trace_ascii = 1; /* enable ASCII tracing */
 
   curl = curl_easy_init();
@@ -151,5 +155,6 @@ int main(void)
     /* always cleanup */
     curl_easy_cleanup(curl);
   }
-  return 0;
+  curl_global_cleanup();
+  return (int)res;
 }
index 13e1e08fcb3e6ab6d504f27c1a79e070b257ee72..b4ea5fa3bfb4b5c9b72859bfa9055c83fe0698de 100644 (file)
@@ -33,6 +33,10 @@ int main(void)
   CURL *curl;
   CURLcode res;
 
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   curl = curl_easy_init();
   if(curl) {
     curl_easy_setopt(curl, CURLOPT_URL, "example.com");
@@ -53,5 +57,6 @@ int main(void)
     /* always cleanup */
     curl_easy_cleanup(curl);
   }
-  return 0;
+  curl_global_cleanup();
+  return (int)res;
 }
index 3fddb2b7431f95494c2633d53005f6ecb07525e4..c22a3601010e196f063d847c5dc6fdffd7c250be 100644 (file)
@@ -449,6 +449,7 @@ void sigint_handler(int signo)
 
 int main(int argc, char **argv)
 {
+  CURLcode res;
   struct GlobalInfo g;
   struct itimerspec its;
   struct epoll_event ev;
@@ -456,6 +457,10 @@ int main(int argc, char **argv)
   (void)argc;
   (void)argv;
 
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   g_should_exit_ = 0;
   signal(SIGINT, sigint_handler);
 
@@ -463,12 +468,14 @@ int main(int argc, char **argv)
   g.epfd = epoll_create1(EPOLL_CLOEXEC);
   if(g.epfd == -1) {
     perror("epoll_create1 failed");
+    curl_global_cleanup();
     return 1;
   }
 
   g.tfd = timerfd_create(CLOCK_MONOTONIC, TFD_NONBLOCK | TFD_CLOEXEC);
   if(g.tfd == -1) {
     perror("timerfd_create failed");
+    curl_global_cleanup();
     return 1;
   }
 
@@ -481,8 +488,10 @@ int main(int argc, char **argv)
   ev.data.fd = g.tfd;
   epoll_ctl(g.epfd, EPOLL_CTL_ADD, g.tfd, &ev);
 
-  if(init_fifo(&g))
+  if(init_fifo(&g)) {
+    curl_global_cleanup();
     return 1;
+  }
   g.multi = curl_multi_init();
 
   /* setup the generic multi interface options we want */
@@ -508,6 +517,7 @@ int main(int argc, char **argv)
       }
       else {
         perror("epoll_wait");
+        curl_global_cleanup();
         return 1;
       }
     }
@@ -530,5 +540,6 @@ int main(int argc, char **argv)
 
   curl_multi_cleanup(g.multi);
   clean_fifo(&g);
+  curl_global_cleanup();
   return 0;
 }
index 364a0f42fefa12bf8a6b3b3bb6c87fd733a17018..79dfd3452178f29607c650360f9a657c5e8ffa11 100644 (file)
@@ -415,10 +415,15 @@ static int init_fifo(struct GlobalInfo *g)
 
 int main(int argc, char **argv)
 {
+  CURLcode res;
   struct GlobalInfo g;
   (void)argc;
   (void)argv;
 
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   memset(&g, 0, sizeof(g));
   g.loop = ev_default_loop(0);
 
@@ -439,5 +444,6 @@ int main(int argc, char **argv)
 
   ev_loop(g.loop, 0);
   curl_multi_cleanup(g.multi);
+  curl_global_cleanup();
   return 0;
 }
index 84c9ba4eb226efdbd8375db5480fd7604fe255c1..99e719b7457481cafec6b8020c2405a07459dc5d 100644 (file)
@@ -103,14 +103,9 @@ int main(void)
   struct sockaddr_in servaddr;  /*  socket address structure  */
   curl_socket_t sockfd;
 
-#ifdef _WIN32
-  WSADATA wsaData;
-  int initwsa = WSAStartup(MAKEWORD(2, 2), &wsaData);
-  if(initwsa) {
-    printf("WSAStartup failed: %d\n", initwsa);
-    return 1;
-  }
-#endif
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -175,8 +170,7 @@ int main(void)
     }
   }
 
-#ifdef _WIN32
-  WSACleanup();
-#endif
+  curl_global_cleanup();
+
   return 0;
 }
index 29c3c3c3c138a813f878fec517c1c05c53f9f2ac..f827c68390a74244d2993e4d2790f1a0cb735838 100644 (file)
@@ -46,9 +46,15 @@ int main(void)
   curl_off_t speed_upload, total_time;
   FILE *fd;
 
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   fd = fopen("debugit", "rb"); /* open file to upload */
-  if(!fd)
+  if(!fd) {
+    curl_global_cleanup();
     return 1; /* cannot continue */
+  }
 
   /* to get the file size */
 #ifdef UNDER_CE
@@ -58,6 +64,7 @@ int main(void)
   if(fstat(fileno(fd), &file_info) != 0) {
 #endif
     fclose(fd);
+    curl_global_cleanup();
     return 1; /* cannot continue */
   }
 
@@ -100,5 +107,6 @@ int main(void)
     curl_easy_cleanup(curl);
   }
   fclose(fd);
+  curl_global_cleanup();
   return 0;
 }
index b879da48d3ef03cd5af6f77459da271356ef1605..f5c553ff68ef4370f0e5811e1f16c6b5f20c35d5 100644 (file)
@@ -37,14 +37,15 @@ static size_t my_fwrite(void *buffer, size_t size, size_t nmemb, void *stream)
   return size * nmemb;
 }
 
-
 int main(void)
 {
   CURL *curl;
   CURLcode res;
   struct curl_slist *headerlist = NULL;
 
-  curl_global_init(CURL_GLOBAL_DEFAULT);
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -80,5 +81,5 @@ int main(void)
 
   curl_global_cleanup();
 
-  return 0;
+  return (int)res;
 }
index ddc6e4aae4c6281b37878fcd3607e21109154dd5..0861f2f0487e5785435a700b9e54fe091f3c4d3e 100644 (file)
@@ -32,67 +32,6 @@ struct callback_data {
   FILE *output;
 };
 
-static long file_is_coming(struct curl_fileinfo *finfo,
-                           void *data,
-                           int remains);
-
-static long file_is_downloaded(void *data);
-
-static size_t write_it(char *buff, size_t size, size_t nmemb,
-                       void *cb_data);
-
-int main(int argc, char **argv)
-{
-  /* curl easy handle */
-  CURL *handle;
-
-  /* help data */
-  struct callback_data data = { 0 };
-
-  /* global initialization */
-  CURLcode rc = curl_global_init(CURL_GLOBAL_ALL);
-  if(rc)
-    return (int)rc;
-
-  /* initialization of easy handle */
-  handle = curl_easy_init();
-  if(!handle) {
-    curl_global_cleanup();
-    return CURLE_OUT_OF_MEMORY;
-  }
-
-  /* turn on wildcard matching */
-  curl_easy_setopt(handle, CURLOPT_WILDCARDMATCH, 1L);
-
-  /* callback is called before download of concrete file started */
-  curl_easy_setopt(handle, CURLOPT_CHUNK_BGN_FUNCTION, file_is_coming);
-
-  /* callback is called after data from the file have been transferred */
-  curl_easy_setopt(handle, CURLOPT_CHUNK_END_FUNCTION, file_is_downloaded);
-
-  /* this callback writes contents into files */
-  curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, write_it);
-
-  /* put transfer data into callbacks */
-  curl_easy_setopt(handle, CURLOPT_CHUNK_DATA, &data);
-  curl_easy_setopt(handle, CURLOPT_WRITEDATA, &data);
-
-  /* curl_easy_setopt(handle, CURLOPT_VERBOSE, 1L); */
-
-  /* set a URL containing wildcard pattern (only in the last part) */
-  if(argc == 2)
-    curl_easy_setopt(handle, CURLOPT_URL, argv[1]);
-  else
-    curl_easy_setopt(handle, CURLOPT_URL, "ftp://example.com/test/*");
-
-  /* and start transfer! */
-  rc = curl_easy_perform(handle);
-
-  curl_easy_cleanup(handle);
-  curl_global_cleanup();
-  return (int)rc;
-}
-
 static long file_is_coming(struct curl_fileinfo *finfo, void *input,
                            int remains)
 {
@@ -151,3 +90,55 @@ static size_t write_it(char *buff, size_t size, size_t nmemb,
     written = fwrite(buff, size, nmemb, stdout);
   return written;
 }
+
+int main(int argc, char **argv)
+{
+  /* curl easy handle */
+  CURL *handle;
+
+  /* help data */
+  struct callback_data data = { 0 };
+
+  /* global initialization */
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
+  /* initialization of easy handle */
+  handle = curl_easy_init();
+  if(!handle) {
+    curl_global_cleanup();
+    return CURLE_OUT_OF_MEMORY;
+  }
+
+  /* turn on wildcard matching */
+  curl_easy_setopt(handle, CURLOPT_WILDCARDMATCH, 1L);
+
+  /* callback is called before download of concrete file started */
+  curl_easy_setopt(handle, CURLOPT_CHUNK_BGN_FUNCTION, file_is_coming);
+
+  /* callback is called after data from the file have been transferred */
+  curl_easy_setopt(handle, CURLOPT_CHUNK_END_FUNCTION, file_is_downloaded);
+
+  /* this callback writes contents into files */
+  curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, write_it);
+
+  /* put transfer data into callbacks */
+  curl_easy_setopt(handle, CURLOPT_CHUNK_DATA, &data);
+  curl_easy_setopt(handle, CURLOPT_WRITEDATA, &data);
+
+  /* curl_easy_setopt(handle, CURLOPT_VERBOSE, 1L); */
+
+  /* set a URL containing wildcard pattern (only in the last part) */
+  if(argc == 2)
+    curl_easy_setopt(handle, CURLOPT_URL, argv[1]);
+  else
+    curl_easy_setopt(handle, CURLOPT_URL, "ftp://example.com/test/*");
+
+  /* and start transfer! */
+  res = curl_easy_perform(handle);
+
+  curl_easy_cleanup(handle);
+  curl_global_cleanup();
+  return (int)res;
+}
index 95369c1c02bd745b33640fadfeb3a43bafcda0a7..f4ba1e52aa248e8e890771a9d26c44e07e1d186a 100644 (file)
@@ -57,7 +57,9 @@ int main(void)
     NULL
   };
 
-  curl_global_init(CURL_GLOBAL_DEFAULT);
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -90,5 +92,5 @@ int main(void)
 
   curl_global_cleanup();
 
-  return 0;
+  return (int)res;
 }
index 485b26bddc72534aa86df5c4d5c26b429e02b4a7..549d3003a8a3e085ce989b96b413ae26e2ecef18 100644 (file)
@@ -49,7 +49,9 @@ int main(void)
   curl_off_t filesize = 0;
   const char *filename = strrchr(ftpurl, '/') + 1;
 
-  curl_global_init(CURL_GLOBAL_DEFAULT);
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -89,5 +91,5 @@ int main(void)
 
   curl_global_cleanup();
 
-  return 0;
+  return (int)res;
 }
index 7b40f77c9483c82b9c69587602852758ac565788..7b6a6e3d2daed6a4e6a1e259b005d04e8857a3fd 100644 (file)
@@ -47,15 +47,22 @@ int main(void)
   FILE *ftpfile;
   FILE *respfile;
 
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   /* local filename to store the file as */
   ftpfile = fopen(FTPBODY, "wb"); /* b is binary, needed on Windows */
-  if(!ftpfile)
+  if(!ftpfile) {
+    curl_global_cleanup();
     return 1;
+  }
 
   /* local filename to store the FTP server's response lines in */
   respfile = fopen(FTPHEADERS, "wb"); /* b is binary, needed on Windows */
   if(!respfile) {
     fclose(ftpfile);
+    curl_global_cleanup();
     return 1;
   }
 
@@ -81,5 +88,5 @@ int main(void)
   fclose(ftpfile); /* close the local file */
   fclose(respfile); /* close the response file */
 
-  return 0;
+  return (int)res;
 }
index dfe80b9f8bc928a956e0cd7a89af31444d6f8699..c2aee89c848751dc7700c1655f09ecb8c027e2f1 100644 (file)
@@ -59,7 +59,9 @@ int main(void)
     NULL
   };
 
-  curl_global_init(CURL_GLOBAL_DEFAULT);
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -97,5 +99,5 @@ int main(void)
 
   curl_global_cleanup();
 
-  return 0;
+  return (int)res;
 }
index 4f3b679226eb2d87c4e83e0344228acfa96efa1b..7588a829532f87036fdb82511021d97721c1f48e 100644 (file)
@@ -109,7 +109,11 @@ int main(void)
   printf("Local file size: %lu bytes.\n", (unsigned long)fsize);
 
   /* In Windows, this inits the Winsock stuff */
-  curl_global_init(CURL_GLOBAL_ALL);
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res) {
+    fclose(hd_src);
+    return (int)res;
+  }
 
   /* get a curl handle */
   curl = curl_easy_init();
@@ -155,5 +159,5 @@ int main(void)
   fclose(hd_src); /* close the local file */
 
   curl_global_cleanup();
-  return 0;
+  return (int)res;
 }
index 3748d68a05b9edbbabcd363a88921120bd819875..70242376ae17a1e83d01429f811fa6ead51fbb37 100644 (file)
@@ -122,5 +122,5 @@ int main(void)
     curl_easy_cleanup(curl);
   }
   curl_global_cleanup();
-  return 0;
+  return (int)res;
 }
index 67495aec68705d63b78866ac8e1a232a501ee85f..544b746873ce5e8a60378c510750fa7ebc243904 100644 (file)
@@ -154,7 +154,10 @@ int main(void)
 {
   CURL *curlhandle = NULL;
 
-  curl_global_init(CURL_GLOBAL_ALL);
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   curlhandle = curl_easy_init();
 
   upload(curlhandle, "ftp://user:pass@example.com/path/file", "C:\\file",
index 9c178c2c8ce3ae5870ee4b7c1948a2976763cfea..d6257afa791c27f4d19b5da359c2796f2dba5895 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -50,5 +53,6 @@ int main(void)
     /* always cleanup */
     curl_easy_cleanup(curl);
   }
-  return 0;
+  curl_global_cleanup();
+  return (int)res;
 }
index 173247d91520835602189e6cec7ad2e574b00636..589047097b54f218e0f82aad995eb50a76031b6a 100644 (file)
@@ -66,11 +66,13 @@ int main(void)
 
   struct MemoryStruct chunk;
 
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   chunk.memory = malloc(1);  /* grown as needed by the realloc above */
   chunk.size = 0;    /* no data at this point */
 
-  curl_global_init(CURL_GLOBAL_ALL);
-
   /* init the curl session */
   curl_handle = curl_easy_init();
 
@@ -114,5 +116,5 @@ int main(void)
   /* we are done with libcurl, so clean it up */
   curl_global_cleanup();
 
-  return 0;
+  return (int)res;
 }
index 91c778d3c1b8e8158e35d29ce486871e169bbdfe..908cd5f850f8ef9a95f9a1fae0faa5dae9031357 100644 (file)
@@ -35,6 +35,10 @@ int main(void)
   char *location;
   long response_code;
 
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   curl = curl_easy_init();
   if(curl) {
     curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
@@ -68,5 +72,6 @@ int main(void)
     /* always cleanup */
     curl_easy_cleanup(curl);
   }
-  return 0;
+  curl_global_cleanup();
+  return (int)res;
 }
index c46f7825a0aa96a34f42b7b4e993fb69c726bd79..ae42f4605fce2c0c937d1884f78d42bb916d3258 100644 (file)
@@ -32,10 +32,12 @@ int main(void)
 {
   CURL *curl;
 
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   curl = curl_easy_init();
   if(curl) {
-    CURLcode res;
-
     curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
     curl_easy_setopt(curl, CURLOPT_REFERER, "https://example.org/referrer");
 
@@ -55,5 +57,6 @@ int main(void)
     /* always cleanup */
     curl_easy_cleanup(curl);
   }
+  curl_global_cleanup();
   return 0;
 }
index 7d8449cdf0a93f53d7e27b5e2ed5e7b867563ccf..50308fd47c385102601c0fc981a57230decd799c 100644 (file)
@@ -421,9 +421,15 @@ int main(void)
   int fd;
   GIOChannel* ch;
 
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   fd = init_fifo();
-  if(fd == CURL_SOCKET_BAD)
+  if(fd == CURL_SOCKET_BAD) {
+    curl_global_cleanup();
     return 1;
+  }
   ch = g_io_channel_unix_new(fd);
   g_io_add_watch(ch, G_IO_IN, fifo_cb, g);
   gmain = g_main_loop_new(NULL, FALSE);
@@ -438,5 +444,6 @@ int main(void)
 
   g_main_loop_run(gmain);
   curl_multi_cleanup(g->multi);
+  curl_global_cleanup();
   return 0;
 }
index ede0c5cbdaedcc4f52524d9cd02a1ade6bc35e97..428374bac6678fe9eaeaf4104ffe74d6e21ca323 100644 (file)
@@ -40,9 +40,12 @@ int main(void)
 {
   CURL *curl;
 
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   curl = curl_easy_init();
   if(curl) {
-    CURLcode res;
     struct curl_header *header;
     curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
     /* example.com is redirected, so we tell libcurl to follow redirection */
@@ -77,5 +80,6 @@ int main(void)
     /* always cleanup */
     curl_easy_cleanup(curl);
   }
+  curl_global_cleanup();
   return 0;
 }
index 1af1eb0c72c32ae1999ad5d038991862380384b1..cc22e70abbe47bfbf16c32386c15aa384f867a9c 100644 (file)
@@ -414,14 +414,21 @@ static void clean_fifo(struct GlobalInfo *g)
 
 int main(int argc, char **argv)
 {
+  CURLcode res;
   struct GlobalInfo g;
   (void)argc;
   (void)argv;
 
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   memset(&g, 0, sizeof(g));
   g.evbase = event_base_new();
-  if(init_fifo(&g))
+  if(init_fifo(&g)) {
+    curl_global_cleanup();
     return 1;
+  }
   g.multi = curl_multi_init();
   evtimer_assign(&g.timer_event, g.evbase, timer_cb, &g);
 
@@ -443,5 +450,6 @@ int main(int argc, char **argv)
   event_del(&g.timer_event);
   event_base_free(g.evbase);
   curl_multi_cleanup(g.multi);
+  curl_global_cleanup();
   return 0;
 }
index ba9fe87a94414eec46acb21e65dd1e70bd737715..303b17f52500875b38c711743854f031c273d1b3 100644 (file)
@@ -80,7 +80,10 @@ static CURLSTScode hstswrite(CURL *easy, struct curl_hstsentry *e,
 int main(void)
 {
   CURL *curl;
-  CURLcode res;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -114,5 +117,6 @@ int main(void)
     /* always cleanup */
     curl_easy_cleanup(curl);
   }
-  return 0;
+  curl_global_cleanup();
+  return (int)res;
 }
index 498bb85bdc8a20e9408417d3572e8d61c096884c..952132fbc4975ee4bcbaafba706580e592cba831 100644 (file)
@@ -76,55 +76,58 @@ void dumpNode(TidyDoc doc, TidyNode tnod, int indent)
 
 int main(int argc, char **argv)
 {
-  if(argc == 2) {
-    CURL *curl;
-    char curl_errbuf[CURL_ERROR_SIZE];
-    TidyDoc tdoc;
-    TidyBuffer docbuf = {0};
-    TidyBuffer tidy_errbuf = {0};
-    int err;
+  CURL *curl;
+  char curl_errbuf[CURL_ERROR_SIZE];
+  TidyDoc tdoc;
+  TidyBuffer docbuf = {0};
+  TidyBuffer tidy_errbuf = {0};
+  CURLcode res;
 
-    curl = curl_easy_init();
-    curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
-    curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, curl_errbuf);
-    curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0L);
-    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_cb);
+  if(argc != 2) {
+    printf("usage: %s <url>\n", argv[0]);
+    return 1;
+  }
+
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
+  curl = curl_easy_init();
+  curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
+  curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, curl_errbuf);
+  curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0L);
+  curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
+  curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_cb);
 
-    tdoc = tidyCreate();
-    tidyOptSetBool(tdoc, TidyForceOutput, yes); /* try harder */
-    tidyOptSetInt(tdoc, TidyWrapLen, 4096);
-    tidySetErrorBuffer(tdoc, &tidy_errbuf);
-    tidyBufInit(&docbuf);
+  tdoc = tidyCreate();
+  tidyOptSetBool(tdoc, TidyForceOutput, yes); /* try harder */
+  tidyOptSetInt(tdoc, TidyWrapLen, 4096);
+  tidySetErrorBuffer(tdoc, &tidy_errbuf);
+  tidyBufInit(&docbuf);
 
-    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &docbuf);
-    err = curl_easy_perform(curl);
-    if(!err) {
-      err = tidyParseBuffer(tdoc, &docbuf); /* parse the input */
-      if(err >= 0) {
-        err = tidyCleanAndRepair(tdoc); /* fix any problems */
-        if(err >= 0) {
-          err = tidyRunDiagnostics(tdoc); /* load tidy error buffer */
-          if(err >= 0) {
-            dumpNode(tdoc, tidyGetRoot(tdoc), 0); /* walk the tree */
-            fprintf(stderr, "%s\n", tidy_errbuf.bp); /* show errors */
-          }
+  curl_easy_setopt(curl, CURLOPT_WRITEDATA, &docbuf);
+  res = curl_easy_perform(curl);
+  if(!res) {
+    res = tidyParseBuffer(tdoc, &docbuf); /* parse the input */
+    if(res >= 0) {
+      res = tidyCleanAndRepair(tdoc); /* fix any problems */
+      if(res >= 0) {
+        res = tidyRunDiagnostics(tdoc); /* load tidy error buffer */
+        if(res >= 0) {
+          dumpNode(tdoc, tidyGetRoot(tdoc), 0); /* walk the tree */
+          fprintf(stderr, "%s\n", tidy_errbuf.bp); /* show errors */
         }
       }
     }
-    else
-      fprintf(stderr, "%s\n", curl_errbuf);
-
-    /* clean-up */
-    curl_easy_cleanup(curl);
-    tidyBufFree(&docbuf);
-    tidyBufFree(&tidy_errbuf);
-    tidyRelease(tdoc);
-    return err;
-
   }
   else
-    printf("usage: %s <url>\n", argv[0]);
+    fprintf(stderr, "%s\n", curl_errbuf);
 
-  return 0;
+  /* clean-up */
+  curl_easy_cleanup(curl);
+  curl_global_cleanup();
+  tidyBufFree(&docbuf);
+  tidyBufFree(&tidy_errbuf);
+  tidyRelease(tdoc);
+  return (int)res;
 }
index 8d75f588fc1aa7e0aadfa0c460c6fb222ea19b4c..e4979ee859d3bbb71c976dbbdfbcb865fea5ef37 100644 (file)
@@ -263,7 +263,7 @@ static void parseHtml(const std::string &html,
 int main(int argc, char *argv[])
 {
   CURL *conn = NULL;
-  CURLcode code;
+  CURLcode res;
   std::string title;
 
   // Ensure one argument is given
@@ -273,21 +273,24 @@ int main(int argc, char *argv[])
     return EXIT_FAILURE;
   }
 
-  curl_global_init(CURL_GLOBAL_DEFAULT);
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   // Initialize CURL connection
 
   if(!init(conn, argv[1])) {
     fprintf(stderr, "Connection initialization failed\n");
+    curl_global_cleanup();
     return EXIT_FAILURE;
   }
 
   // Retrieve content for the URL
 
-  code = curl_easy_perform(conn);
+  res = curl_easy_perform(conn);
   curl_easy_cleanup(conn);
 
-  if(code != CURLE_OK) {
+  if(res != CURLE_OK) {
     fprintf(stderr, "Failed to get '%s' [%s]\n", argv[1], errorBuffer);
     return EXIT_FAILURE;
   }
@@ -298,5 +301,5 @@ int main(int argc, char *argv[])
   // Display the extracted title
   printf("Title: %s\n", title.c_str());
 
-  return EXIT_SUCCESS;
+  return (int)res;
 }
index 586b55f12a51271f6d07f73783d2a3c49a796d52..9520670baeab45fa5399f9219c99a24ef4e53e64 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -55,5 +58,6 @@ int main(void)
     /* always cleanup */
     curl_easy_cleanup(curl);
   }
+  curl_global_cleanup();
   return 0;
 }
index 901ee1e3f041b606ad53d5faa2a7e538f05f9b0e..fb91822bb8ab5bb299fa151ac1244430ae7db44d 100644 (file)
@@ -34,7 +34,9 @@ int main(void)
   CURLcode res;
 
   /* In Windows, this inits the Winsock stuff */
-  curl_global_init(CURL_GLOBAL_ALL);
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   /* get a curl handle */
   curl = curl_easy_init();
@@ -57,5 +59,5 @@ int main(void)
     curl_easy_cleanup(curl);
   }
   curl_global_cleanup();
-  return 0;
+  return (int)res;
 }
index a524cac27f32c542f4ae1760dbf72ba8f2a73d26..6343234667623a59622ee1ade3687a98ef1df6db 100644 (file)
@@ -190,11 +190,13 @@ static int setup(struct transfer *t, int num)
  */
 int main(int argc, char **argv)
 {
+  CURLcode res;
   struct transfer trans[NUM_HANDLES];
   CURLM *multi_handle;
   int i;
   int still_running = 0; /* keep number of running handles */
   int num_transfers;
+
   if(argc > 1) {
     /* if given a number, do that many transfers */
     num_transfers = atoi(argv[1]);
@@ -204,12 +206,18 @@ int main(int argc, char **argv)
   else
     num_transfers = 3; /* suitable default */
 
+  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))
+    if(setup(&trans[i], i)) {
+      curl_global_cleanup();
       return 1;
+    }
 
     /* add the individual transfer */
     curl_multi_add_handle(multi_handle, trans[i].easy);
index 873883ca504d38f624abb87a4561ccdab5e9f9ac..3e2b4af1c2a1ea63ac4d78b48859c8aac5482fa0 100644 (file)
@@ -130,6 +130,10 @@ int main(void)
   int i;
   struct CURLMsg *m;
 
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   /* init a multi stack */
   multi = curl_multi_init();
 
@@ -155,7 +159,6 @@ int main(void)
     if(mcode)
       break;
 
-
     /*
      * When doing server push, libcurl itself created and added one or more
      * easy handles but *we* need to clean them up when they are done.
@@ -173,8 +176,8 @@ int main(void)
 
   }
 
-
   curl_multi_cleanup(multi);
+  curl_global_cleanup();
 
   /* 'pushindex' is now the number of received transfers */
   for(i = 0; i < pushindex; i++) {
index cea54e3af1a5392f31a2d7195b564b0c6363b6e6..0d0e991776d956c38eb3d57ca5ec22e20616c952 100644 (file)
@@ -212,6 +212,7 @@ static int server_push_callback(CURL *parent,
  */
 int main(int argc, char *argv[])
 {
+  CURLcode res;
   CURL *easy;
   CURLM *multi_handle;
   int transfers = 1; /* we start with one */
@@ -221,6 +222,10 @@ int main(int argc, char *argv[])
   if(argc == 2)
     url = argv[1];
 
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   /* init a multi stack */
   multi_handle = curl_multi_init();
 
@@ -229,6 +234,7 @@ int main(int argc, char *argv[])
   /* set options */
   if(setup(easy, url)) {
     fprintf(stderr, "failed\n");
+    curl_global_cleanup();
     return 1;
   }
 
@@ -270,7 +276,7 @@ int main(int argc, char *argv[])
   } while(transfers); /* as long as we have transfers going */
 
   curl_multi_cleanup(multi_handle);
-
+  curl_global_cleanup();
 
   return 0;
 }
index a22161d76dd22efecf27f3eff089edf1f396f173..9cc3c5652cbc37ef4edc4cf004142290231e7d0b 100644 (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;
 }
index 56ba0f572474e2ae5e5077d167cec39716cd4486..084f265c46a9ce7131d55bd52b3a76f2bb9a7c3d 100644 (file)
@@ -32,7 +32,9 @@ int main(void)
 {
   curl_version_info_data *ver;
 
-  curl_global_init(CURL_GLOBAL_ALL);
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   ver = curl_version_info(CURLVERSION_NOW);
   if(ver->features & CURL_VERSION_HTTP2)
index 573ea20d2b488bb68248917ac4bf8183cdc50627..323f6d7d17b64f3eca76b620a4bba3a6877babf9 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -50,5 +53,6 @@ int main(void)
     /* always cleanup */
     curl_easy_cleanup(curl);
   }
+  curl_global_cleanup();
   return 0;
 }
index a3881674c1bd520e8afa4089098c19bcf9253695..0657313ddf6c04ff9e9e38ce0d370a5faaaca8f8 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -68,5 +71,6 @@ int main(void)
     /* free the custom headers */
     curl_slist_free_all(chunk);
   }
-  return 0;
+  curl_global_cleanup();
+  return (int)res;
 }
index 5f410837b867aa0135a4c85a1214812064996289..b855f454aec41ef757bfafd93792830760938e95 100644 (file)
@@ -58,7 +58,9 @@ int main(int argc, char **argv)
   url = argv[1];
 
   /* In Windows, this inits the Winsock stuff */
-  curl_global_init(CURL_GLOBAL_ALL);
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   /* get a curl handle */
   curl = curl_easy_init();
@@ -100,5 +102,5 @@ int main(int argc, char **argv)
   }
 
   curl_global_cleanup();
-  return 0;
+  return (int)res;
 }
index 1951cb232e8ba2c073bbea4e6d57ebb21ccb74ac..2aef62fc6713dc7afa0852f266be8c2f564abdaa 100644 (file)
@@ -101,7 +101,11 @@ int main(int argc, char **argv)
   }
 
   /* In Windows, this inits the Winsock stuff */
-  curl_global_init(CURL_GLOBAL_ALL);
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res) {
+    fclose(hd_src);
+    return (int)res;
+  }
 
   /* get a curl handle */
   curl = curl_easy_init();
@@ -137,5 +141,5 @@ int main(int argc, char **argv)
   fclose(hd_src); /* close the local file */
 
   curl_global_cleanup();
-  return 0;
+  return (int)res;
 }
index c1cba877df615507e6edd9807d9c5c54ce03c283..23729afcaa02f1ae5dfe65b76a44f88d34a73109 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res;
 
-  curl_global_init(CURL_GLOBAL_DEFAULT);
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -79,5 +80,5 @@ int main(void)
 
   curl_global_cleanup();
 
-  return 0;
+  return (int)res;
 }
index 1839deac1dd6c3f4dd6a0511ca468092908cd70f..e8851ce97717def9be4621c62181f6b3e3dd4fbc 100644 (file)
@@ -87,7 +87,10 @@ static size_t payload_source(char *ptr, size_t size, size_t nmemb, void *userp)
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -126,5 +129,7 @@ int main(void)
     curl_easy_cleanup(curl);
   }
 
+  curl_global_cleanup();
+
   return (int)res;
 }
index eb615c6f3d5cdaebd453f8ece1e3e88c34fde8b9..b7c2e43f99d90732b456dd78a01988cef0df216c 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -69,5 +72,7 @@ int main(void)
     curl_easy_cleanup(curl);
   }
 
+  curl_global_cleanup();
+
   return (int)res;
 }
index a221be0ca8de2869ac0d93df17079dd227a39c81..8adb8b8c6d8073a2d21a066618d6ead519d5701e 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -69,5 +72,7 @@ int main(void)
     curl_easy_cleanup(curl);
   }
 
+  curl_global_cleanup();
+
   return (int)res;
 }
index 6a9b565345a9c38a02f1633a267accabd46a25b5..51fbe5f1420cfa5bb2a58f3316b4017a6c16eab1 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -65,5 +68,7 @@ int main(void)
     curl_easy_cleanup(curl);
   }
 
+  curl_global_cleanup();
+
   return (int)res;
 }
index e43ab2e9824fdcfe4f5fac0f005aec7393896072..a7682f7664d330d873cb8f2f73c535be39c09cdf 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -65,5 +68,7 @@ int main(void)
     curl_easy_cleanup(curl);
   }
 
+  curl_global_cleanup();
+
   return (int)res;
 }
index 34217bfa42c121bfef53bf3bba9ea1424cbbc5e8..a46d450d21ab15caecb992d3b5e28f639964b3c3 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -65,5 +68,7 @@ int main(void)
     curl_easy_cleanup(curl);
   }
 
+  curl_global_cleanup();
+
   return (int)res;
 }
index 416fe88096846e7eda3b06935d799c20e65b4333..937d3e05b80e74b172f59c307de5e712a863f7c2 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -63,5 +66,7 @@ int main(void)
     curl_easy_cleanup(curl);
   }
 
+  curl_global_cleanup();
+
   return (int)res;
 }
index 0253b543e6facd98d7e5c8ef80b6c04128374cb1..2d882503d09e030ffd23e4616490a86390ee28ce 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -64,5 +67,7 @@ int main(void)
     curl_easy_cleanup(curl);
   }
 
+  curl_global_cleanup();
+
   return (int)res;
 }
index cf45a5fc2da87d7c3cf22a5ec4f83b4642e7d825..74472d42ec232124ed061f98cdcd25c419e43533 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -66,5 +69,7 @@ int main(void)
     curl_easy_cleanup(curl);
   }
 
+  curl_global_cleanup();
+
   return (int)res;
 }
index 42fa7381cd2131edecfa162f303fcb73720cf4f9..e2d5dd4e9cc6b4cdd1c89c465e19b5b15bb20feb 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLM *mcurl;
-  int still_running = 1;
 
-  curl_global_init(CURL_GLOBAL_DEFAULT);
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
-  if(!curl)
-    return 1;
+  if(curl) {
+    CURLM *mcurl;
 
-  mcurl = curl_multi_init();
-  if(!mcurl)
-    return 2;
+    mcurl = curl_multi_init();
+    if(mcurl) {
+      int still_running = 1;
 
-  /* Set username and password */
-  curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
-  curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
+      /* Set username and password */
+      curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
+      curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
 
-  /* This fetches message 1 from the user's inbox */
-  curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com/INBOX/;UID=1");
+      /* This fetches message 1 from the user's inbox */
+      curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com/"
+                       "INBOX/;UID=1");
 
-  /* Tell the multi stack about our easy handle */
-  curl_multi_add_handle(mcurl, curl);
+      /* Tell the multi stack about our easy handle */
+      curl_multi_add_handle(mcurl, curl);
 
-  do {
-    CURLMcode mc = curl_multi_perform(mcurl, &still_running);
+      do {
+        CURLMcode mc = curl_multi_perform(mcurl, &still_running);
 
-    if(still_running)
-      /* wait for activity, timeout or "nothing" */
-      mc = curl_multi_poll(mcurl, NULL, 0, 1000, NULL);
+        if(still_running)
+          /* wait for activity, timeout or "nothing" */
+          mc = curl_multi_poll(mcurl, NULL, 0, 1000, NULL);
 
-    if(mc)
-      break;
-  } while(still_running);
+        if(mc)
+          break;
+      } while(still_running);
+
+      /* Always cleanup */
+      curl_multi_remove_handle(mcurl, curl);
+      curl_multi_cleanup(mcurl);
+    }
+    curl_easy_cleanup(curl);
+  }
 
-  /* Always cleanup */
-  curl_multi_remove_handle(mcurl, curl);
-  curl_multi_cleanup(mcurl);
-  curl_easy_cleanup(curl);
   curl_global_cleanup();
 
   return 0;
index 9e5a3da2d5278a59f7cba47aa78eaff154c77765..1d8607590f6f60a7a051687d199b965a2d6f3dda 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -65,5 +68,7 @@ int main(void)
     curl_easy_cleanup(curl);
   }
 
+  curl_global_cleanup();
+
   return (int)res;
 }
index 141b06f649db51cadd703d9afbb1461d3d3ba5c7..b4e1576b38c6baf61f141811298ca3baf12643af 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -69,5 +72,7 @@ int main(void)
     curl_easy_cleanup(curl);
   }
 
+  curl_global_cleanup();
+
   return (int)res;
 }
index e632c30e86d8e6fef801d4273944e7b7f554ab16..59edd130e526a8490f866fb672da7b287ff35654 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -90,5 +93,7 @@ int main(void)
     curl_easy_cleanup(curl);
   }
 
+  curl_global_cleanup();
+
   return (int)res;
 }
index d04a6072cc4e88e522ddda7f0766c78424a60bda..95d8f0747652db65a71c2c9290c44a7ac83389d7 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -80,5 +83,7 @@ int main(void)
     curl_easy_cleanup(curl);
   }
 
+  curl_global_cleanup();
+
   return (int)res;
 }
index 8fbc96bb55c3ad171c06036864c2a82894799971..9009174ccf015dc4005033d9f31dc0be47762d42 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -90,5 +93,7 @@ int main(void)
     curl_easy_cleanup(curl);
   }
 
+  curl_global_cleanup();
+
   return (int)res;
 }
index f1a2016ced5dbe1ee6bd4bf4e53e1e19c0bf7436..0698b6a8e2f2e165e15cd8435c3c1ac21e5772a7 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -48,5 +51,7 @@ int main(void)
     curl_easy_cleanup(curl);
   }
 
+  curl_global_cleanup();
+
   return (int)res;
 }
index 1b698705d0ccf29fab1780a5c7ffd5c06de82d01..1a55d640494fed3bb2d2e3a3281815e3220a1f75 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -44,5 +47,7 @@ int main(void)
     curl_easy_cleanup(curl);
   }
 
+  curl_global_cleanup();
+
   return (int)res;
 }
index e06d7ff37b7bba8897bab783feb758b8ac274afd..8d55c71337744cde284333c1aa37a9199615bc67 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -54,5 +57,7 @@ int main(void)
     curl_easy_cleanup(curl);
   }
 
+  curl_global_cleanup();
+
   return (int)res;
 }
index 7e88ce48a7c44bdd449642a28a7fefd2ab8f0e88..2700457211ddddb8832982c615c43feeb5f8ee7f 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -49,5 +52,7 @@ int main(void)
     curl_easy_cleanup(curl);
   }
 
+  curl_global_cleanup();
+
   return (int)res;
 }
index 66e193167712dfdfc2145102739e92b4e588edfb..fe5f02f882c83fbd696d274ae7c3a34795843793 100644 (file)
@@ -207,6 +207,7 @@ static size_t mywrite(char *ptr, size_t size, size_t nmemb, void *userdata)
 
 int main(void)
 {
+  CURLcode res;
   unsigned i;
   int total_failed = 0;
   char errbuf[CURL_ERROR_SIZE] = { 0, };
@@ -222,9 +223,10 @@ int main(void)
   transfer[1].bodyfile = "400.txt";
   transfer[1].logfile = "400_transfer_log.txt";
 
-  if(curl_global_init(CURL_GLOBAL_DEFAULT)) {
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res) {
     fprintf(stderr, "curl_global_init failed\n");
-    return 1;
+    return (int)res;
   }
 
   /* You could enable global tracing for extra verbosity when verbosity is
@@ -334,5 +336,7 @@ int main(void)
     printf("\n");
   }
 
+  curl_global_cleanup();
+
   return total_failed ? 1 : 0;
 }
index 2e8e5b50a82cde54e507aece441785c453d3a8ed..e89f971cf41e62a057beffe29abcd28c22bca6d7 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -62,5 +65,8 @@ int main(void)
     /* always cleanup */
     curl_easy_cleanup(curl);
   }
+
+  curl_global_cleanup();
+
   return 0;
 }
index 5bbf580f82efb0d2cdcd98a40b0fade11a26105a..8deee683709cb60b648af0e12307f47e697db7e8 100644 (file)
@@ -52,6 +52,10 @@ int main(void)
   CURLMsg *msg; /* for picking up messages with the transfer status */
   int msgs_left; /* how many messages are left */
 
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   /* Allocate one curl handle per transfer */
   for(i = 0; i < HANDLECOUNT; i++)
     handles[i] = curl_easy_init();
@@ -110,6 +114,7 @@ int main(void)
   }
 
   curl_multi_cleanup(multi_handle);
+  curl_global_cleanup();
 
   return 0;
 }
index 738732279dbd33930b8915626f3f71bb90454fb2..a27c238a579143b1d5733347508edccc34fc3787 100644 (file)
@@ -127,6 +127,10 @@ int main(void)
 
   int still_running = 0; /* keep number of running handles */
 
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   http_handle = curl_easy_init();
 
   /* set the options (I left out a few, you get the point anyway) */
@@ -157,5 +161,7 @@ int main(void)
 
   curl_easy_cleanup(http_handle);
 
+  curl_global_cleanup();
+
   return 0;
 }
index 99bd736a9ce3ccc7271d7ed658d1a91ee9cfa49b..8c5c5d687ad3233e47f95821ff01f934c7e36e42 100644 (file)
@@ -42,6 +42,10 @@ int main(void)
 
   int still_running = 1; /* keep number of running handles */
 
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   http_handle = curl_easy_init();
   http_handle2 = curl_easy_init();
 
@@ -89,5 +93,7 @@ int main(void)
   curl_easy_cleanup(http_handle);
   curl_easy_cleanup(http_handle2);
 
+  curl_global_cleanup();
+
   return 0;
 }
index 23dff05ed2b4e6402fba70968021ad2f84b048f5..62dc73b33fb6b50e768479e7f4897474e347424b 100644 (file)
@@ -219,12 +219,15 @@ static int handle_socket(CURL *easy, curl_socket_t s, int action, void *userp,
 
 int main(int argc, char **argv)
 {
+  CURLcode res;
+
   if(argc <= 1)
     return 0;
 
-  if(curl_global_init(CURL_GLOBAL_ALL)) {
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res) {
     fprintf(stderr, "Could not init curl\n");
-    return 1;
+    return (int)res;
   }
 
   base = event_base_new();
index 58c7e641c4a1a3b4e46a9c6d38e4edad3cf1293e..84312ffd160a4e222e832c6027f92e78f40f0c6b 100644 (file)
@@ -48,6 +48,10 @@ int main(void)
   struct curl_slist *headerlist = NULL;
   static const char buf[] = "Expect:";
 
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   CURL_IGNORE_DEPRECATION(
     /* Fill in the file upload field. This makes libcurl load data from
        the given file name when curl_easy_perform() is called. */
@@ -116,5 +120,6 @@ int main(void)
     /* free slist */
     curl_slist_free_all(headerlist);
   }
+  curl_global_cleanup();
   return 0;
 }
index b0c37ea8d54a4c621f4726da432a3f0e4126f7dd..63c238f2475a6217a249141fa5a802fe5a33f100 100644 (file)
@@ -58,6 +58,10 @@ int main(void)
   CURLMsg *msg; /* for picking up messages with the transfer status */
   int msgs_left; /* how many messages are left */
 
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   /* Allocate one curl handle per transfer */
   for(i = 0; i < HANDLECOUNT; i++)
     handles[i] = curl_easy_init();
@@ -187,5 +191,7 @@ int main(void)
   for(i = 0; i < HANDLECOUNT; i++)
     curl_easy_cleanup(handles[i]);
 
+   curl_global_cleanup();
+
   return 0;
 }
index 84af48f4bfb55540ead417180fef818f3551970c..45416b85114b963f1729cbb88e77121d052dbeae 100644 (file)
@@ -43,6 +43,10 @@ int main(void)
   struct curl_slist *headerlist = NULL;
   static const char buf[] = "Expect:";
 
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   curl = curl_easy_init();
   multi_handle = curl_multi_init();
 
@@ -100,5 +104,6 @@ int main(void)
     /* free slist */
     curl_slist_free_all(headerlist);
   }
+  curl_global_cleanup();
   return 0;
 }
index 0ead96f4871fdbd1c0fe44fdc963ffb2310831dd..3ba26e79db66dbe456b7c8fa038d97182fef6ae8 100644 (file)
@@ -41,7 +41,9 @@ int main(void)
   CURLM *multi_handle;
   int still_running = 1; /* keep number of running handles */
 
-  curl_global_init(CURL_GLOBAL_DEFAULT);
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   http_handle = curl_easy_init();
 
index cc27668d57063526c2420c21bd52e627a013d16e..b4f5587c0fb1c09a9e69c8ac930d517d268fb74f 100644 (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();
 
index a47758062f5dadaa8c95c1c79524e7bbbff968c5..5818dfebee49a18a659236ccf15652ea0d0c1a5c 100644 (file)
@@ -72,11 +72,14 @@ static void *pull_one_url(void *pindex)
 
 int main(void)
 {
+  CURLcode res;
   pthread_t tid[NUMT];
   int i;
 
   /* Must initialize libcurl before any threads are started */
-  curl_global_init(CURL_GLOBAL_ALL);
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   for(i = 0; i < NUMT; i++) {
     int error = pthread_create(&tid[i],
index 42e1b6341e50bff1446c735be820a4214fe67c82..148a7e422be9fd0a3175e87840fd59d328feacbc 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -45,5 +48,7 @@ int main(void)
     curl_easy_cleanup(curl);
   }
 
+  curl_global_cleanup();
+
   return (int)res;
 }
index ffcf343fbf92d58c3bc5a61ed85a383c041971ca..7cde055d69b88d2a626a9ad77b664093b90a69dc 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res;
 
-  curl_global_init(CURL_GLOBAL_ALL);
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -68,5 +69,5 @@ int main(void)
 
   curl_global_cleanup();
 
-  return 0;
+  return (int)res;
 }
index 3281b322bb9c2595934a72ea207f55c5e241639e..8cfe80bca2393c8644b2d11e7a47c7c8a8811cbb 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -68,5 +71,7 @@ int main(void)
     curl_easy_cleanup(curl);
   }
 
+  curl_global_cleanup();
+
   return (int)res;
 }
index fe3795c245ae1b6044b08449a3d069398eb409d8..84592da4f9fff1230ac691961b5a9fa8cffa7668 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -68,5 +71,7 @@ int main(void)
     curl_easy_cleanup(curl);
   }
 
+  curl_global_cleanup();
+
   return (int)res;
 }
index 2cd44e41cdb14ab4172b955ac3e1c93a8e9de910..05ecc662331a1c121fd02e76b9a1bf75652eeccb 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -62,5 +65,7 @@ int main(void)
     curl_easy_cleanup(curl);
   }
 
+  curl_global_cleanup();
+
   return (int)res;
 }
index 54eb7ecc324364124d4515e87c43770cd1558ef2..4d418a7d09a7d804d9a7c741e1642f1db1b69f5d 100644 (file)
 
 int main(void)
 {
+  CURLcode res;
   CURL *curl;
-  CURLM *mcurl;
-  int still_running = 1;
 
-  curl_global_init(CURL_GLOBAL_DEFAULT);
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
-  if(!curl)
-    return 1;
+  if(curl) {
+    CURLM *mcurl;
 
-  mcurl = curl_multi_init();
-  if(!mcurl)
-    return 2;
+    mcurl = curl_multi_init();
+    if(mcurl) {
+      int still_running = 1;
 
-  /* Set username and password */
-  curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
-  curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
+      /* Set username and password */
+      curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
+      curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
 
-  /* This retrieves message 1 from the user's mailbox */
-  curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com/1");
+      /* This retrieves message 1 from the user's mailbox */
+      curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com/1");
 
-  /* Tell the multi stack about our easy handle */
-  curl_multi_add_handle(mcurl, curl);
+      /* Tell the multi stack about our easy handle */
+      curl_multi_add_handle(mcurl, curl);
 
-  do {
-    CURLMcode mc = curl_multi_perform(mcurl, &still_running);
+      do {
+        CURLMcode mc = curl_multi_perform(mcurl, &still_running);
 
-    if(still_running)
-      /* wait for activity, timeout or "nothing" */
-      mc = curl_multi_poll(mcurl, NULL, 0, 1000, NULL);
+        if(still_running)
+          /* wait for activity, timeout or "nothing" */
+          mc = curl_multi_poll(mcurl, NULL, 0, 1000, NULL);
 
-    if(mc)
-      break;
+        if(mc)
+          break;
 
-  } while(still_running);
+      } while(still_running);
+
+      /* Always cleanup */
+      curl_multi_remove_handle(mcurl, curl);
+      curl_multi_cleanup(mcurl);
+    }
+    curl_easy_cleanup(curl);
+  }
 
-  /* Always cleanup */
-  curl_multi_remove_handle(mcurl, curl);
-  curl_multi_cleanup(mcurl);
-  curl_easy_cleanup(curl);
   curl_global_cleanup();
 
   return 0;
index 16181d2875ef5f4d031fd1734a1567e144a7953d..0ab6eb2d14c5a0488fc4151b1d054f64aaaaef43 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -68,5 +71,7 @@ int main(void)
     curl_easy_cleanup(curl);
   }
 
+  curl_global_cleanup();
+
   return (int)res;
 }
index 8e690f972f2b5e7b78bb5fa7965baafe792b5923..c89c77e5d6490bb0497b78328aac4bdd1674bf4b 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -62,5 +65,7 @@ int main(void)
     curl_easy_cleanup(curl);
   }
 
+  curl_global_cleanup();
+
   return (int)res;
 }
index 23dd959ea0af8cba7a968c3b95244603ee2be547..63a9edca70d6b5a3fb67d1bd526e4347ebc9f86b 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -89,5 +92,7 @@ int main(void)
     curl_easy_cleanup(curl);
   }
 
+  curl_global_cleanup();
+
   return (int)res;
 }
index 419859bfa6db1487b5bf837c562cb28dd8b9cee4..afaf79c9a4db2c7b24d3b677a44969502332c4a8 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -68,5 +71,7 @@ int main(void)
     curl_easy_cleanup(curl);
   }
 
+  curl_global_cleanup();
+
   return (int)res;
 }
index b2f504c475d8e829fc158011e09533874212bf20..a4a7208986b44759036d739d5250f74c48d85e9a 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -89,5 +92,7 @@ int main(void)
     curl_easy_cleanup(curl);
   }
 
+  curl_global_cleanup();
+
   return (int)res;
 }
index 7ceba881b295c899eb4d5f37d32d220dbbc98f2e..7584503b0c2cbc0179f597dc5171b6e0d7c8d233 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -65,5 +68,7 @@ int main(void)
     curl_easy_cleanup(curl);
   }
 
+  curl_global_cleanup();
+
   return (int)res;
 }
index 496e5b08d45ecbf84d567467e05bfb3f7e71acb9..aec10342311d1ff027b29c159ac7d00e906f7138 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -65,5 +68,7 @@ int main(void)
     curl_easy_cleanup(curl);
   }
 
+  curl_global_cleanup();
+
   return (int)res;
 }
index fa0c575e657837237fde14d9eaf641e13f607871..7c5a87e9acf79ab346865bf6afc9a28933966b58 100644 (file)
@@ -79,7 +79,7 @@ int main(void)
   if(res != CURLE_OK) {
     fprintf(stderr, "curl_global_init() failed: %s\n",
             curl_easy_strerror(res));
-    return 1;
+    return (int)res;
   }
 
   /* get a curl handle */
index cbdc77f75c72ea24bd618a12b75590aa8c2ac719..2a8f2b6dd0c89a8090bcc88086ac4fce6713766d 100644 (file)
@@ -63,10 +63,13 @@ int main(void)
   struct MemoryStruct chunk;
   static const char *postthis = "Field=1&Field=2&Field=3";
 
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   chunk.memory = malloc(1);  /* grown as needed by realloc above */
   chunk.size = 0;    /* no data at this point */
 
-  curl_global_init(CURL_GLOBAL_ALL);
   curl = curl_easy_init();
   if(curl) {
     curl_easy_setopt(curl, CURLOPT_URL, "https://www.example.org/");
index 88fb924750327e45d9245136855a9f5beff3b6df..81f8bfd27c116b8f882858fab8a8b07c3e218da4 100644 (file)
@@ -57,7 +57,9 @@ int main(int argc, char *argv[])
   struct curl_slist *headerlist = NULL;
   static const char buf[] = "Expect:";
 
-  curl_global_init(CURL_GLOBAL_ALL);
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   CURL_IGNORE_DEPRECATION(
     /* Fill in the file upload field */
index d16d3fccf64e65fd42f8e84f1eba7f1c7a719734..c42ea812c1186904e82b8706d21638ffc7362587 100644 (file)
@@ -53,7 +53,9 @@ int main(int argc, char *argv[])
   struct curl_slist *headerlist = NULL;
   static const char buf[] = "Expect:";
 
-  curl_global_init(CURL_GLOBAL_ALL);
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
index e164f03ca5c57720b70dbc3c191c1d42f85b1080..012fd1e6aee1ceddc878a14b08ac52ce3b7637c7 100644 (file)
@@ -70,9 +70,12 @@ static int xferinfo(void *p,
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
   struct myprogress prog;
 
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   curl = curl_easy_init();
   if(curl) {
     prog.lastruntime = 0;
@@ -93,5 +96,6 @@ int main(void)
     /* always cleanup */
     curl_easy_cleanup(curl);
   }
+  curl_global_cleanup();
   return (int)res;
 }
index 3e762218ae2499d9d218ce291f0ef3c28c1e59da..fef4a3798d795475b5c2e6461efcc0a6b1899e11 100644 (file)
@@ -37,7 +37,9 @@ int main(void)
   curl_version_info_data *ver;
   const char *const *ptr;
 
-  curl_global_init(CURL_GLOBAL_ALL);
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   ver = curl_version_info(CURLVERSION_NOW);
   printf("Protocols:\n");
index c8229fca4d43bdb742df9b763577c8987372eb49..ec85ed878dc30ffcc5b30d63ef5f034f33305650 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -41,5 +44,7 @@ int main(void)
     curl_easy_cleanup(curl);
   }
 
+  curl_global_cleanup();
+
   return (int)res;
 }
index 6514e93d8d3c1ead82589eb3a5468311f0f62041..4ccc3ff1d815f287c1c74c520de746d4efbc6e57 100644 (file)
@@ -32,7 +32,6 @@
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
 
   /* Each single name resolve string should be written using the format
      HOST:PORT:ADDRESS where HOST is the name libcurl tries to resolve, PORT
@@ -42,6 +41,10 @@ int main(void)
   struct curl_slist *host = curl_slist_append(NULL,
                                               "example.com:443:127.0.0.1");
 
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   curl = curl_easy_init();
   if(curl) {
     curl_easy_setopt(curl, CURLOPT_RESOLVE, host);
@@ -53,6 +56,7 @@ int main(void)
   }
 
   curl_slist_free_all(host);
+  curl_global_cleanup();
 
   return (int)res;
 }
index d1ddbf01ff24076b84d6b3d52eb0212dd1e24d99..50d5e2f27ee074aeaf9c513256db88f107e0887d 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -51,5 +54,6 @@ int main(void)
     /* always cleanup */
     curl_easy_cleanup(curl);
   }
+  curl_global_cleanup();
   return 0;
 }
index 8cbb5b0722fc98382a309d650a30c4b440ef59d8..71faeb4ad31e31dda3bf0a2eb73232efd4035597 100644 (file)
@@ -83,6 +83,10 @@ int main(void)
   const char *request = "GET / HTTP/1.0\r\nHost: example.com\r\n\r\n";
   size_t request_len = strlen(request);
 
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   /* A general note of caution here: if you are using curl_easy_recv() or
      curl_easy_send() to implement HTTP or _any_ other protocol libcurl
      supports "natively", you are doing it wrong and you should stop.
@@ -93,7 +97,6 @@ int main(void)
 
   curl = curl_easy_init();
   if(curl) {
-    CURLcode res;
     curl_socket_t sockfd;
     size_t nsent_total = 0;
 
@@ -175,5 +178,6 @@ int main(void)
     /* always cleanup */
     curl_easy_cleanup(curl);
   }
+  curl_global_cleanup();
   return 0;
 }
index 097183f82169f6ad1f516a5ef1abc1be68f02771..cea07fd56698b0a74b113b357609d266ff8e3a8d 100644 (file)
@@ -38,60 +38,65 @@ static size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream)
 
 int main(void)
 {
-  CURLcode res;
   CURL *curl_handle;
-  static const char *headerfilename = "head.out";
-  FILE *headerfile;
-  static const char *bodyfilename = "body.out";
-  FILE *bodyfile;
 
-  curl_global_init(CURL_GLOBAL_ALL);
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   /* init the curl session */
   curl_handle = curl_easy_init();
+  if(curl_handle) {
+    static const char *headerfilename = "head.out";
+    FILE *headerfile;
+    static const char *bodyfilename = "body.out";
+    FILE *bodyfile;
+
+    /* set URL to get */
+    curl_easy_setopt(curl_handle, CURLOPT_URL, "https://example.com");
+
+    /* no progress meter please */
+    curl_easy_setopt(curl_handle, CURLOPT_NOPROGRESS, 1L);
+
+    /* send all data to this function  */
+    curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, write_data);
+
+    /* open the header file */
+    headerfile = fopen(headerfilename, "wb");
+    if(!headerfile) {
+      curl_easy_cleanup(curl_handle);
+      curl_global_cleanup();
+      return -1;
+    }
+
+    /* open the body file */
+    bodyfile = fopen(bodyfilename, "wb");
+    if(!bodyfile) {
+      curl_easy_cleanup(curl_handle);
+      fclose(headerfile);
+      curl_global_cleanup();
+      return -1;
+    }
+
+    /* we want the headers be written to this file handle */
+    curl_easy_setopt(curl_handle, CURLOPT_HEADERDATA, headerfile);
+
+    /* we want the body be written to this file handle instead of stdout */
+    curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, bodyfile);
+
+    /* get it! */
+    res = curl_easy_perform(curl_handle);
+
+    /* close the header file */
+    fclose(headerfile);
 
-  /* set URL to get */
-  curl_easy_setopt(curl_handle, CURLOPT_URL, "https://example.com");
-
-  /* no progress meter please */
-  curl_easy_setopt(curl_handle, CURLOPT_NOPROGRESS, 1L);
-
-  /* send all data to this function  */
-  curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, write_data);
+    /* close the body file */
+    fclose(bodyfile);
 
-  /* open the header file */
-  headerfile = fopen(headerfilename, "wb");
-  if(!headerfile) {
+    /* cleanup curl stuff */
     curl_easy_cleanup(curl_handle);
-    return -1;
-  }
-
-  /* open the body file */
-  bodyfile = fopen(bodyfilename, "wb");
-  if(!bodyfile) {
-    curl_easy_cleanup(curl_handle);
-    fclose(headerfile);
-    return -1;
   }
 
-  /* we want the headers be written to this file handle */
-  curl_easy_setopt(curl_handle, CURLOPT_HEADERDATA, headerfile);
-
-  /* we want the body be written to this file handle instead of stdout */
-  curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, bodyfile);
-
-  /* get it! */
-  res = curl_easy_perform(curl_handle);
-
-  /* close the header file */
-  fclose(headerfile);
-
-  /* close the body file */
-  fclose(bodyfile);
-
-  /* cleanup curl stuff */
-  curl_easy_cleanup(curl_handle);
-
   curl_global_cleanup();
 
   return (int)res;
index bbdcfe8d2319aa98e780fc3ecada1a826e61c6e4..c7ea52ccc2e8c23d168a564be9efa0af5c34d6ac 100644 (file)
@@ -96,9 +96,9 @@ static size_t wrfu(void *ptr, size_t size, size_t nmemb, void *stream)
 
 int main(void)
 {
-  CURLcode res = CURLE_OK;
-
-  curl_global_init(CURL_GLOBAL_DEFAULT);
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
index 4d33939a40bf8781e701d41c2b477abda973c471..36653c5b828c3685a4a4c84086a967bade58f40b 100644 (file)
@@ -62,13 +62,14 @@ static size_t my_fwrite(void *buffer, size_t size, size_t nmemb,
 int main(void)
 {
   CURL *curl;
-  CURLcode res;
   struct FtpFile ftpfile = {
     "yourfile.bin", /* name to store the file as if successful */
     NULL
   };
 
-  curl_global_init(CURL_GLOBAL_DEFAULT);
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -108,5 +109,5 @@ int main(void)
 
   curl_global_cleanup();
 
-  return 0;
+  return (int)res;
 }
index f1f7b0c275a3abd73a6d65cd4eb27ed7ab3dab19..4bb0f3e48ebb52fd8d6fa916ed706e77e71cd3df 100644 (file)
@@ -125,7 +125,10 @@ int main(void)
   const char *filename = "filename";
   CURL *curlhandle = NULL;
 
-  curl_global_init(CURL_GLOBAL_ALL);
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   curlhandle = curl_easy_init();
 
   if(!sftpResumeUpload(curlhandle, remote, filename)) {
index dc6805a9f19e8d59a084b15cbf821002d0621376..a8549d77666884f75ea707bb71fe157dfe70cb36 100644 (file)
@@ -51,6 +51,10 @@ int main(void)
   CURLSH *share;
   int i;
 
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   share = curl_share_init();
   curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_CONNECT);
 
@@ -63,8 +67,6 @@ int main(void)
   for(i = 0; i < 3; i++) {
     CURL *curl = curl_easy_init();
     if(curl) {
-      CURLcode res;
-
       curl_easy_setopt(curl, CURLOPT_URL, "https://curl.se/");
 
       /* use the share object */
@@ -83,5 +85,6 @@ int main(void)
   }
 
   curl_share_cleanup(share);
-  return 0;
+  curl_global_cleanup();
+  return (int)res;
 }
index 53c8e4754f3d7c7ba8af58a91a6200be50e2e343..29ed14313edaf378e84ceb0641f4ba2ecbf2de20 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -49,5 +52,6 @@ int main(void)
     /* always cleanup */
     curl_easy_cleanup(curl);
   }
+  curl_global_cleanup();
   return 0;
 }
index 7ced982fe010ffc33bfaa77eb1eb7bc453207bfb..b1175ba924a43598cf155cb8704546446c7c9189 100644 (file)
 
 int main(void)
 {
+  static const char *postthis = "moo mooo moo moo";
+
   CURL *curl;
-  CURLcode res;
 
-  static const char *postthis = "moo mooo moo moo";
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -54,5 +57,6 @@ int main(void)
     /* always cleanup */
     curl_easy_cleanup(curl);
   }
-  return 0;
+  curl_global_cleanup();
+  return (int)res;
 }
index 220dc62bcd1b158eb786f2799a4f48c715a911c8..5da79a79a068e2cc0deae21a604c4d98222481a1 100644 (file)
@@ -77,7 +77,11 @@ int main(void)
   if(!headerfile)
     return 1;
 
-  curl_global_init(CURL_GLOBAL_DEFAULT);
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res) {
+    fclose(headerfile);
+    return (int)res;
+  }
 
   curl = curl_easy_init();
   if(curl) {
index 3b615cb344c3dd0f506d00b530a08069fd14e55a..29d134db47b1a041ae716bc3fce6b5ed23937f68 100644 (file)
@@ -169,7 +169,9 @@ int main(int argc, char **argv)
   GtkWidget *top_window, *outside_frame, *inside_frame, *progress_bar;
 
   /* Must initialize libcurl before any threads are started */
-  curl_global_init(CURL_GLOBAL_ALL);
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   /* Init thread */
   g_thread_init(NULL);
index daaeab16943c906e8e133bc8414deb12bf475f17..addc17691e0f3c57609987bf36f2cdddd30ad1b2 100644 (file)
@@ -95,10 +95,13 @@ static size_t payload_source(char *ptr, size_t size, size_t nmemb, void *userp)
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
   struct curl_slist *recipients = NULL;
   struct upload_status upload_ctx = { 0 };
 
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   curl = curl_easy_init();
   if(curl) {
     /* This is the URL for your mailserver. In this example we connect to the
@@ -158,5 +161,7 @@ int main(void)
     curl_easy_cleanup(curl);
   }
 
+  curl_global_cleanup();
+
   return (int)res;
 }
index 202d1d089fa8d2b79aebf7b93407becc42d3eae6..baec49be6906ea0b90aa4c86db38aba122eb0a45 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res;
   struct curl_slist *recipients = NULL;
 
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   curl = curl_easy_init();
   if(curl) {
     /* This is the URL for your mailserver */
@@ -77,5 +80,7 @@ int main(void)
     curl_easy_cleanup(curl);
   }
 
+  curl_global_cleanup();
+
   return 0;
 }
index 29918de7ff93125c703af3d0202fa21dbab4fcd1..6583fc47099fbf5bef98ddbe33885a469e8c3b9b 100644 (file)
@@ -92,10 +92,13 @@ static size_t payload_source(char *ptr, size_t size, size_t nmemb, void *userp)
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
   struct curl_slist *recipients = NULL;
   struct upload_status upload_ctx = { 0 };
 
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   curl = curl_easy_init();
   if(curl) {
     /* This is the URL for your mailserver */
@@ -146,5 +149,7 @@ int main(void)
     curl_easy_cleanup(curl);
   }
 
+  curl_global_cleanup();
+
   return (int)res;
 }
index 7a2a9c618b03314e4e01826db13e93d8284fc56b..d26021ef3407a71488973643b7c92e1229e4448a 100644 (file)
@@ -71,7 +71,10 @@ static const char inline_html[] =
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -164,5 +167,7 @@ int main(void)
     curl_mime_free(mime);
   }
 
+  curl_global_cleanup();
+
   return (int)res;
 }
index 8837c57fd87fcdc20f735f8771c7e9acdb448acd..f7619465ee17212010a23cee822a1dfc89931ad4 100644 (file)
@@ -85,68 +85,72 @@ static size_t payload_source(char *ptr, size_t size, size_t nmemb, void *userp)
 int main(void)
 {
   CURL *curl;
-  CURLM *mcurl;
-  int still_running = 1;
-  struct curl_slist *recipients = NULL;
-  struct upload_status upload_ctx = { 0 };
 
-  curl_global_init(CURL_GLOBAL_DEFAULT);
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
-  if(!curl)
-    return 1;
-
-  mcurl = curl_multi_init();
-  if(!mcurl)
-    return 2;
-
-  /* This is the URL for your mailserver */
-  curl_easy_setopt(curl, CURLOPT_URL, "smtp://mail.example.com");
-
-  /* Note that this option is not strictly required, omitting it results in
-   * libcurl sending the MAIL FROM command with empty sender data. All
-   * autoresponses should have an empty reverse-path, and should be directed
-   * to the address in the reverse-path which triggered them. Otherwise, they
-   * could cause an endless loop. See RFC 5321 Section 4.5.5 for more details.
-   */
-  curl_easy_setopt(curl, CURLOPT_MAIL_FROM, FROM_MAIL);
-
-  /* Add two recipients, in this particular case they correspond to the
-   * To: and Cc: addressees in the header, but they could be any kind of
-   * recipient. */
-  recipients = curl_slist_append(recipients, TO_MAIL);
-  recipients = curl_slist_append(recipients, CC_MAIL);
-  curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients);
-
-  /* We are using a callback function to specify the payload (the headers and
-   * body of the message). You could just use the CURLOPT_READDATA option to
-   * specify a FILE pointer to read from. */
-  curl_easy_setopt(curl, CURLOPT_READFUNCTION, payload_source);
-  curl_easy_setopt(curl, CURLOPT_READDATA, &upload_ctx);
-  curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
-
-  /* Tell the multi stack about our easy handle */
-  curl_multi_add_handle(mcurl, curl);
-
-  do {
-    CURLMcode mc = curl_multi_perform(mcurl, &still_running);
-
-    if(still_running)
-      /* wait for activity, timeout or "nothing" */
-      mc = curl_multi_poll(mcurl, NULL, 0, 1000, NULL);
-
-    if(mc)
-      break;
-
-  } while(still_running);
-
-  /* Free the list of recipients */
-  curl_slist_free_all(recipients);
-
-  /* Always cleanup */
-  curl_multi_remove_handle(mcurl, curl);
-  curl_multi_cleanup(mcurl);
-  curl_easy_cleanup(curl);
+  if(curl) {
+    CURLM *mcurl;
+
+    mcurl = curl_multi_init();
+    if(mcurl) {
+      int still_running = 1;
+      struct curl_slist *recipients = NULL;
+      struct upload_status upload_ctx = { 0 };
+
+      /* This is the URL for your mailserver */
+      curl_easy_setopt(curl, CURLOPT_URL, "smtp://mail.example.com");
+
+      /* Note that this option is not strictly required, omitting it results
+       * in libcurl sending the MAIL FROM command with empty sender data. All
+       * autoresponses should have an empty reverse-path, and should be
+       * directed to the address in the reverse-path which triggered them.
+       * Otherwise, they could cause an endless loop. See RFC 5321 Section
+       * 4.5.5 for more details.
+       */
+      curl_easy_setopt(curl, CURLOPT_MAIL_FROM, FROM_MAIL);
+
+      /* Add two recipients, in this particular case they correspond to the
+       * To: and Cc: addressees in the header, but they could be any kind of
+       * recipient. */
+      recipients = curl_slist_append(recipients, TO_MAIL);
+      recipients = curl_slist_append(recipients, CC_MAIL);
+      curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients);
+
+      /* We are using a callback function to specify the payload (the headers
+       * and body of the message). You could just use the CURLOPT_READDATA
+       * option to specify a FILE pointer to read from. */
+      curl_easy_setopt(curl, CURLOPT_READFUNCTION, payload_source);
+      curl_easy_setopt(curl, CURLOPT_READDATA, &upload_ctx);
+      curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
+
+      /* Tell the multi stack about our easy handle */
+      curl_multi_add_handle(mcurl, curl);
+
+      do {
+        CURLMcode mc = curl_multi_perform(mcurl, &still_running);
+
+        if(still_running)
+          /* wait for activity, timeout or "nothing" */
+          mc = curl_multi_poll(mcurl, NULL, 0, 1000, NULL);
+
+        if(mc)
+          break;
+
+      } while(still_running);
+
+      /* Free the list of recipients */
+      curl_slist_free_all(recipients);
+
+      /* Always cleanup */
+      curl_multi_remove_handle(mcurl, curl);
+      curl_multi_cleanup(mcurl);
+    }
+    curl_easy_cleanup(curl);
+  }
+
   curl_global_cleanup();
 
   return 0;
index c88b4fe7cab030bb97873632207cf2ccbac88abf..f952441c9c6a84a835d85c1b23f49b8dbcc83542 100644 (file)
@@ -89,10 +89,13 @@ static size_t payload_source(char *ptr, size_t size, size_t nmemb, void *userp)
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
   struct curl_slist *recipients = NULL;
   struct upload_status upload_ctx = { 0 };
 
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   curl = curl_easy_init();
   if(curl) {
     /* Set username and password */
@@ -166,5 +169,7 @@ int main(void)
     curl_easy_cleanup(curl);
   }
 
+  curl_global_cleanup();
+
   return (int)res;
 }
index 34a00bd548352b56138aa399a1d71b7476f2ebd9..3eaea9d879fc9c8fe4073ee4b90149fcc8be53c7 100644 (file)
@@ -89,10 +89,13 @@ static size_t payload_source(char *ptr, size_t size, size_t nmemb, void *userp)
 int main(void)
 {
   CURL *curl;
-  CURLcode res = CURLE_OK;
   struct curl_slist *recipients = NULL;
   struct upload_status upload_ctx = { 0 };
 
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   curl = curl_easy_init();
   if(curl) {
     /* Set username and password */
@@ -169,5 +172,7 @@ int main(void)
     curl_easy_cleanup(curl);
   }
 
+  curl_global_cleanup();
+
   return (int)res;
 }
index 0135efef2df0cc7ad0e27beb11d95be09b6d9589..76dd8069adfa7bd8c3ec8b16f0a54391cdf8f4ff 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res;
   struct curl_slist *recipients = NULL;
 
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   curl = curl_easy_init();
   if(curl) {
     /* This is the URL for your mailserver */
@@ -77,5 +80,7 @@ int main(void)
     curl_easy_cleanup(curl);
   }
 
-  return 0;
+  curl_global_cleanup();
+
+  return (int)res;
 }
index d5f5a5bfde1adcc4c760fb35e1c7c26832a409cc..da2c7ea0f36282a825ca2891ae4889b960a2d47c 100644 (file)
@@ -245,6 +245,7 @@ static int conf_init(struct conf *conf)
 
 int main(int argc, char *argv[])
 {
+  CURLcode res;
   CURL *curl;
   struct conf conf[1];
   int RetValue;
@@ -285,7 +286,10 @@ int main(int argc, char *argv[])
     snprintf(conf->timeserver, MAX_STRING, "%s", DefaultTimeServer[0]);
 
   /* Init CURL before usage */
-  curl_global_init(CURL_GLOBAL_ALL);
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   curl = curl_easy_init();
   if(curl) {
     struct tm *lt;
index fb60b7f16050e56b18a66aa865c587eb8adb88e2..7f09a76fc187934bc284cbb5e677a78f55a7cabe 100644 (file)
@@ -72,13 +72,16 @@ static void *pull_one_url(void *pindex)
 
 int main(int argc, char **argv)
 {
+  CURLcode res;
   pthread_t tid[NUMT];
   int i;
   (void)argc;
   (void)argv;
 
   /* Must initialize libcurl before any threads are started */
-  curl_global_init(CURL_GLOBAL_ALL);
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   for(i = 0; i < NUMT; i++) {
     int error = pthread_create(&tid[i],
index 63acd4b6a2e0be1342a0014264c76c2eba4c65b3..738ffc2c972f6e81f17bcdf6f19e916f5102d873 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -63,5 +66,6 @@ int main(void)
     /* always cleanup */
     curl_easy_cleanup(curl);
   }
-  return 0;
+  curl_global_cleanup();
+  return (int)res;
 }
index c55d2a77c792e656d216f8c8b88497c1db4810ed..2e8e225fce9048670b96800bca843efe87deace6 100644 (file)
@@ -38,8 +38,7 @@ static size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream)
 
 int main(int argc, char *argv[])
 {
-  CURLcode res = CURLE_OK;
-
+  CURLcode res;
   CURL *curl_handle;
   static const char *pagefilename = "page.out";
   FILE *pagefile;
@@ -49,7 +48,11 @@ int main(int argc, char *argv[])
     return 1;
   }
 
-  curl_global_init(CURL_GLOBAL_ALL);
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res) {
+    fprintf(stderr, "Could not init curl\n");
+    return (int)res;
+  }
 
   /* init the curl session */
   curl_handle = curl_easy_init();
index 2ed78eb11fc60ee3ac295b4d06eef378b1c19443..8953146e4dadf010a925ce776ecce05b50a4788b 100644 (file)
 int main(void)
 {
   CURL *curl;
-  CURLcode res;
 
   CURLU *urlp;
   CURLUcode uc;
 
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   /* get a curl handle */
   curl = curl_easy_init();
 
@@ -73,5 +76,6 @@ int main(void)
 cleanup:
   curl_url_cleanup(urlp);
   curl_easy_cleanup(curl);
-  return 0;
+  curl_global_cleanup();
+  return (int)res;
 }
index 2a3c2b0006494ff257cf5f513512c76cdecfaf81..d95e2a1cddd1522643c443aa90d3450ab1ddc03c 100644 (file)
@@ -157,7 +157,10 @@ static CURLcode sslctx_function(CURL *curl, void *sslctx, void *pointer)
 int main(void)
 {
   CURL *ch;
-  CURLcode rv;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl_global_init(CURL_GLOBAL_ALL);
   ch = curl_easy_init();
@@ -180,8 +183,8 @@ int main(void)
   curl_easy_setopt(ch, CURLOPT_SSLKEYTYPE, "PEM");
 
   /* first try: retrieve page without user certificate and key -> fails */
-  rv = curl_easy_perform(ch);
-  if(rv == CURLE_OK)
+  res = curl_easy_perform(ch);
+  if(res == CURLE_OK)
     printf("*** transfer succeeded ***\n");
   else
     printf("*** transfer failed ***\n");
@@ -191,13 +194,13 @@ int main(void)
    * "modifications" to the SSL CONTEXT just before link init
    */
   curl_easy_setopt(ch, CURLOPT_SSL_CTX_FUNCTION, sslctx_function);
-  rv = curl_easy_perform(ch);
-  if(rv == CURLE_OK)
+  res = curl_easy_perform(ch);
+  if(res == CURLE_OK)
     printf("*** transfer succeeded ***\n");
   else
     printf("*** transfer failed ***\n");
 
   curl_easy_cleanup(ch);
   curl_global_cleanup();
-  return (int)rv;
+  return (int)res;
 }
index 09d6c647dd196e3e4460a85439acb1c9103d2bb2..aa81d89ab126bb4df88e9e1b8d9f553729f08fb9 100644 (file)
@@ -44,7 +44,10 @@ static size_t writecb(char *b, size_t size, size_t nitems, void *p)
 int main(void)
 {
   CURL *curl;
-  CURLcode res;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
   if(curl) {
@@ -64,5 +67,6 @@ int main(void)
     /* always cleanup */
     curl_easy_cleanup(curl);
   }
-  return 0;
+  curl_global_cleanup();
+  return (int)res;
 }
index 0257c6077ed63cdf3905f8259c4b94f2c3c73d4e..f95c151cacd118598719a8e5fa141e13240d5622 100644 (file)
@@ -87,39 +87,42 @@ int main(int argc, const char *argv[])
 {
   CURL *easy;
   struct read_ctx rctx;
-  CURLcode res;
   const char *payload = "Hello, friend!";
 
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   memset(&rctx, 0, sizeof(rctx));
 
   easy = curl_easy_init();
-  if(!easy)
-    return 1;
-
-  if(argc == 2)
-    curl_easy_setopt(easy, CURLOPT_URL, argv[1]);
-  else
-    curl_easy_setopt(easy, CURLOPT_URL, "wss://example.com");
+  if(easy) {
+    if(argc == 2)
+      curl_easy_setopt(easy, CURLOPT_URL, argv[1]);
+    else
+      curl_easy_setopt(easy, CURLOPT_URL, "wss://example.com");
 
-  curl_easy_setopt(easy, CURLOPT_WRITEFUNCTION, writecb);
-  curl_easy_setopt(easy, CURLOPT_WRITEDATA, easy);
-  curl_easy_setopt(easy, CURLOPT_READFUNCTION, readcb);
-  /* tell curl that we want to send the payload */
-  rctx.easy = easy;
-  rctx.blen = strlen(payload);
-  memcpy(rctx.buf, payload, rctx.blen);
-  curl_easy_setopt(easy, CURLOPT_READDATA, &rctx);
-  curl_easy_setopt(easy, CURLOPT_UPLOAD, 1L);
+    curl_easy_setopt(easy, CURLOPT_WRITEFUNCTION, writecb);
+    curl_easy_setopt(easy, CURLOPT_WRITEDATA, easy);
+    curl_easy_setopt(easy, CURLOPT_READFUNCTION, readcb);
+    /* tell curl that we want to send the payload */
+    rctx.easy = easy;
+    rctx.blen = strlen(payload);
+    memcpy(rctx.buf, payload, rctx.blen);
+    curl_easy_setopt(easy, CURLOPT_READDATA, &rctx);
+    curl_easy_setopt(easy, CURLOPT_UPLOAD, 1L);
 
 
-  /* Perform the request, res gets the return code */
-  res = curl_easy_perform(easy);
-  /* Check for errors */
-  if(res != CURLE_OK)
-    fprintf(stderr, "curl_easy_perform() failed: %s\n",
-            curl_easy_strerror(res));
+    /* Perform the request, res gets the return code */
+    res = curl_easy_perform(easy);
+    /* Check for errors */
+    if(res != CURLE_OK)
+      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+              curl_easy_strerror(res));
 
-  /* always cleanup */
-  curl_easy_cleanup(easy);
-  return 0;
+    /* always cleanup */
+    curl_easy_cleanup(easy);
+  }
+  curl_global_cleanup();
+  return (int)res;
 }
index be676839f7c575caa17f3489eef099b41fc04c65..be6cff64a2d7be48315829380556ad7cbda4a574 100644 (file)
@@ -138,31 +138,34 @@ static CURLcode websocket(CURL *curl)
 int main(int argc, const char *argv[])
 {
   CURL *curl;
-  CURLcode res;
+
+  CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
 
   curl = curl_easy_init();
-  if(!curl) {
-    return 1; /* memory failure */
-  }
-  if(argc == 2)
-    curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
-  else
-    curl_easy_setopt(curl, CURLOPT_URL, "wss://example.com");
+  if(curl) {
+    if(argc == 2)
+      curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
+    else
+      curl_easy_setopt(curl, CURLOPT_URL, "wss://example.com");
 
-  curl_easy_setopt(curl, CURLOPT_CONNECT_ONLY, 2L); /* websocket style */
+    curl_easy_setopt(curl, CURLOPT_CONNECT_ONLY, 2L); /* websocket style */
 
-  /* Perform the request, res gets the return code */
-  res = curl_easy_perform(curl);
-  /* Check for errors */
-  if(res != CURLE_OK)
-    fprintf(stderr, "curl_easy_perform() failed: %s\n",
-            curl_easy_strerror(res));
-  else {
-    /* connected and ready */
-    res = websocket(curl);
-  }
+    /* Perform the request, res gets the return code */
+    res = curl_easy_perform(curl);
+    /* Check for errors */
+    if(res != CURLE_OK)
+      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+              curl_easy_strerror(res));
+    else {
+      /* connected and ready */
+      res = websocket(curl);
+    }
 
-  /* always cleanup */
-  curl_easy_cleanup(curl);
+    /* always cleanup */
+    curl_easy_cleanup(curl);
+  }
+  curl_global_cleanup();
   return (int)res;
 }
index 91c5387888c0d929cd64684749e1dc485666c1f6..4f8401be4a911ffd9383fc67111301e2aec2a964 100644 (file)
@@ -131,8 +131,11 @@ int main(void)
   XML_SetElementHandler(parser, startElement, endElement);
   XML_SetCharacterDataHandler(parser, characterDataHandler);
 
+  res = curl_global_init(CURL_GLOBAL_ALL);
+  if(res)
+    return (int)res;
+
   /* Initialize a libcurl handle. */
-  curl_global_init(CURL_GLOBAL_DEFAULT);
   curl_handle = curl_easy_init();
   curl_easy_setopt(curl_handle, CURLOPT_URL,
                    "https://www.w3schools.com/xml/simple.xml");
@@ -166,5 +169,5 @@ int main(void)
   curl_easy_cleanup(curl_handle);
   curl_global_cleanup();
 
-  return 0;
+  return (int)res;
 }