]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
examples/complicated: fix warnings, bump deprecated callback, tidy up
authorViktor Szakats <commit@vsz.me>
Fri, 20 Dec 2024 01:00:22 +0000 (02:00 +0100)
committerViktor Szakats <commit@vsz.me>
Fri, 20 Dec 2024 16:56:35 +0000 (17:56 +0100)
Also: make them C89, add consts.

Closes #15785

15 files changed:
docs/examples/cacertinmem.c
docs/examples/crawler.c
docs/examples/ephiperfifo.c
docs/examples/evhiperfifo.c
docs/examples/ghiper.c
docs/examples/hiperfifo.c
docs/examples/htmltitle.cpp
docs/examples/multi-event.c
docs/examples/multi-uv.c
docs/examples/multithread.c
docs/examples/sessioninfo.c
docs/examples/synctime.c
docs/examples/threaded-ssl.c
docs/examples/usercertinmem.c
docs/examples/xmlstream.c

index ff748db4b4c8dce4d3fa6c89068122e7b7f17ba3..b095b4616667f0d6e11e2ae2742e2df0d0826cee 100644 (file)
@@ -41,6 +41,11 @@ static CURLcode sslctx_function(CURL *curl, void *sslctx, void *parm)
 {
   CURLcode rv = CURLE_ABORTED_BY_CALLBACK;
 
+#if defined(__GNUC__) || defined(__clang__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Woverlength-strings"
+#endif
+
   /** This example uses two (fake) certificates **/
   static const char mypem[] =
     "-----BEGIN CERTIFICATE-----\n"
@@ -85,6 +90,10 @@ static CURLcode sslctx_function(CURL *curl, void *sslctx, void *parm)
     "Z05phkOTOPu220+DkdRgfks+KzgHVZhepA==\n"
     "-----END CERTIFICATE-----\n";
 
+#if defined(__GNUC__) || defined(__clang__)
+#pragma GCC diagnostic pop
+#endif
+
   BIO *cbio = BIO_new_mem_buf(mypem, sizeof(mypem));
   X509_STORE  *cts = SSL_CTX_get_cert_store((SSL_CTX *)sslctx);
   int i;
@@ -178,5 +187,5 @@ int main(void)
 
   curl_easy_cleanup(ch);
   curl_global_cleanup();
-  return rv;
+  return (int)rv;
 }
index 2ff4ae71459d81f575ae04c43bece5af946e0590..d2f89db9dcffc90afa1ba48510213cf82571a8d5 100644 (file)
  * </DESC>
  */
 
-/* Parameters */
-int max_con = 200;
-int max_total = 20000;
-int max_requests = 500;
-int max_link_per_page = 5;
-int follow_relative_links = 0;
-char *start_page = "https://www.reuters.com";
-
 #include <libxml/HTMLparser.h>
 #include <libxml/xpath.h>
 #include <libxml/uri.h>
@@ -47,9 +39,18 @@ char *start_page = "https://www.reuters.com";
 #include <math.h>
 #include <signal.h>
 
-int pending_interrupt = 0;
-void sighandler(int dummy)
+/* Parameters */
+static int max_con = 200;
+static int max_total = 20000;
+static int max_requests = 500;
+static size_t max_link_per_page = 5;
+static int follow_relative_links = 0;
+static const char *start_page = "https://www.reuters.com";
+
+static int pending_interrupt = 0;
+static void sighandler(int dummy)
 {
+  (void)dummy;
   pending_interrupt = 1;
 }
 
@@ -59,7 +60,7 @@ typedef struct {
   size_t size;
 } memory;
 
-size_t grow_buffer(void *contents, size_t sz, size_t nmemb, void *ctx)
+static size_t grow_buffer(void *contents, size_t sz, size_t nmemb, void *ctx)
 {
   size_t realsize = sz * nmemb;
   memory *mem = (memory*) ctx;
@@ -75,16 +76,17 @@ size_t grow_buffer(void *contents, size_t sz, size_t nmemb, void *ctx)
   return realsize;
 }
 
-CURL *make_handle(char *url)
+static CURL *make_handle(const char *url)
 {
   CURL *handle = curl_easy_init();
+  memory *mem;
 
   /* Important: use HTTP2 over HTTPS */
   curl_easy_setopt(handle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2TLS);
   curl_easy_setopt(handle, CURLOPT_URL, url);
 
   /* buffer body */
-  memory *mem = malloc(sizeof(memory));
+  mem = malloc(sizeof(memory));
   mem->size = 0;
   mem->buf = malloc(1);
   curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, grow_buffer);
@@ -117,37 +119,43 @@ CURL *make_handle(char *url)
 }
 
 /* HREF finder implemented in libxml2 but could be any HTML parser */
-size_t follow_links(CURLM *multi_handle, memory *mem, char *url)
+static size_t follow_links(CURLM *multi_handle, memory *mem, const char *url)
 {
   int opts = HTML_PARSE_NOBLANKS | HTML_PARSE_NOERROR | \
              HTML_PARSE_NOWARNING | HTML_PARSE_NONET;
-  htmlDocPtr doc = htmlReadMemory(mem->buf, mem->size, url, NULL, opts);
+  htmlDocPtr doc = htmlReadMemory(mem->buf, (int)mem->size, url, NULL, opts);
+  size_t count;
+  int i;
+  xmlChar *xpath;
+  xmlNodeSetPtr nodeset;
+  xmlXPathContextPtr context;
+  xmlXPathObjectPtr result;
   if(!doc)
     return 0;
-  xmlChar *xpath = (xmlChar*) "//a/@href";
-  xmlXPathContextPtr context = xmlXPathNewContext(doc);
-  xmlXPathObjectPtr result = xmlXPathEvalExpression(xpath, context);
+  xpath = (xmlChar*) "//a/@href";
+  context = xmlXPathNewContext(doc);
+  result = xmlXPathEvalExpression(xpath, context);
   xmlXPathFreeContext(context);
   if(!result)
     return 0;
-  xmlNodeSetPtr nodeset = result->nodesetval;
+  nodeset = result->nodesetval;
   if(xmlXPathNodeSetIsEmpty(nodeset)) {
     xmlXPathFreeObject(result);
     return 0;
   }
-  size_t count = 0;
-  int i;
+  count = 0;
   for(i = 0; i < nodeset->nodeNr; i++) {
     double r = rand();
-    int x = r * nodeset->nodeNr / RAND_MAX;
+    int x = (int)(r * nodeset->nodeNr / RAND_MAX);
     const xmlNode *node = nodeset->nodeTab[x]->xmlChildrenNode;
     xmlChar *href = xmlNodeListGetString(doc, node, 1);
+    char *link;
     if(follow_relative_links) {
       xmlChar *orig = href;
       href = xmlBuildURI(href, (xmlChar *) url);
       xmlFree(orig);
     }
-    char *link = (char *) href;
+    link = (char *) href;
     if(!link || strlen(link) < 20)
       continue;
     if(!strncmp(link, "http://", 7) || !strncmp(link, "https://", 8)) {
@@ -161,17 +169,23 @@ size_t follow_links(CURLM *multi_handle, memory *mem, char *url)
   return count;
 }
 
-int is_html(char *ctype)
+static int is_html(char *ctype)
 {
   return ctype != NULL && strlen(ctype) > 10 && strstr(ctype, "text/html");
 }
 
 int main(void)
 {
+  CURLM *multi_handle;
+  int msgs_left;
+  int pending;
+  int complete;
+  int still_running;
+
   signal(SIGINT, sighandler);
-  LIBXML_TEST_VERSION;
+  LIBXML_TEST_VERSION
   curl_global_init(CURL_GLOBAL_DEFAULT);
-  CURLM *multi_handle = curl_multi_init();
+  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);
 
@@ -183,17 +197,18 @@ int main(void)
   /* sets html start page */
   curl_multi_add_handle(multi_handle, make_handle(start_page));
 
-  int msgs_left;
-  int pending = 0;
-  int complete = 0;
-  int still_running = 1;
+  pending = 0;
+  complete = 0;
+  still_running = 1;
   while(still_running && !pending_interrupt) {
     int numfds;
+    CURLMsg *m;
+
     curl_multi_wait(multi_handle, NULL, 0, 1000, &numfds);
     curl_multi_perform(multi_handle, &still_running);
 
     /* See how the transfers went */
-    CURLMsg *m = NULL;
+    m = NULL;
     while((m = curl_multi_info_read(multi_handle, &msgs_left))) {
       if(m->msg == CURLMSG_DONE) {
         CURL *handle = m->easy_handle;
index 8edcd2015d45b0aa004afd7c39e32c4e2c451fbb..2104a6b887906f95fa5d24502708735d3ba7d91a 100644 (file)
@@ -354,13 +354,13 @@ static int prog_cb(void *p, double dltotal, double dlnow, double ult,
 
 
 /* Create a new easy handle, and add it to the global curl_multi */
-static void new_conn(char *url, GlobalInfo *g)
+static void new_conn(const char *url, GlobalInfo *g)
 {
   ConnInfo *conn;
   CURLMcode rc;
 
   conn = (ConnInfo*)calloc(1, sizeof(ConnInfo));
-  conn->error[0]='\0';
+  conn->error[0] = '\0';
 
   conn->easy = curl_easy_init();
   if(!conn->easy) {
index 8997dff11de62e64a4aabe9df4232cdcbefafd9f..fc320dc252961af08e876f4fa1968f92324c8285 100644 (file)
@@ -75,8 +75,6 @@ callback.
 #include <sys/stat.h>
 #include <errno.h>
 
-#define DPRINT(x...) printf(x)
-
 #define MSG_OUT stdout /* Send info to stdout, change to stderr if you want */
 
 
@@ -119,7 +117,8 @@ static void timer_cb(EV_P_ struct ev_timer *w, int revents);
 /* Update the event timer after curl_multi library calls */
 static int multi_timer_cb(CURLM *multi, long timeout_ms, GlobalInfo *g)
 {
-  DPRINT("%s %li\n", __PRETTY_FUNCTION__,  timeout_ms);
+  (void)multi;
+  printf("%s %li\n", __PRETTY_FUNCTION__, timeout_ms);
   ev_timer_stop(g->loop, &g->timer_event);
   if(timeout_ms >= 0) {
     /* -1 means delete, other values are timeout times in milliseconds */
@@ -201,12 +200,15 @@ static void check_multi_info(GlobalInfo *g)
 /* Called by libevent when we get action on a multi socket */
 static void event_cb(EV_P_ struct ev_io *w, int revents)
 {
-  DPRINT("%s  w %p revents %i\n", __PRETTY_FUNCTION__, w, revents);
-  GlobalInfo *g = (GlobalInfo*) w->data;
+  GlobalInfo *g;
   CURLMcode rc;
+  int action;
+
+  printf("%s  w %p revents %i\n", __PRETTY_FUNCTION__, (void *)w, revents);
+  g = (GlobalInfo*) w->data;
 
-  int action = ((revents & EV_READ) ? CURL_POLL_IN : 0) |
-    ((revents & EV_WRITE) ? CURL_POLL_OUT : 0);
+  action = ((revents & EV_READ) ? CURL_POLL_IN : 0) |
+           ((revents & EV_WRITE) ? CURL_POLL_OUT : 0);
   rc = curl_multi_socket_action(g->multi, w->fd, action, &g->still_running);
   mcode_or_die("event_cb: curl_multi_socket_action", rc);
   check_multi_info(g);
@@ -219,11 +221,13 @@ static void event_cb(EV_P_ struct ev_io *w, int revents)
 /* Called by libevent when our timeout expires */
 static void timer_cb(EV_P_ struct ev_timer *w, int revents)
 {
-  DPRINT("%s  w %p revents %i\n", __PRETTY_FUNCTION__, w, revents);
-
-  GlobalInfo *g = (GlobalInfo *)w->data;
+  GlobalInfo *g;
   CURLMcode rc;
 
+  printf("%s  w %p revents %i\n", __PRETTY_FUNCTION__, (void *)w, revents);
+
+  g = (GlobalInfo *)w->data;
+
   rc = curl_multi_socket_action(g->multi, CURL_SOCKET_TIMEOUT, 0,
                                 &g->still_running);
   mcode_or_die("timer_cb: curl_multi_socket_action", rc);
@@ -247,11 +251,11 @@ static void remsock(SockInfo *f, GlobalInfo *g)
 static void setsock(SockInfo *f, curl_socket_t s, CURL *e, int act,
                     GlobalInfo *g)
 {
-  printf("%s  \n", __PRETTY_FUNCTION__);
-
   int kind = ((act & CURL_POLL_IN) ? EV_READ : 0) |
              ((act & CURL_POLL_OUT) ? EV_WRITE : 0);
 
+  printf("%s  \n", __PRETTY_FUNCTION__);
+
   f->sockfd = s;
   f->action = act;
   f->easy = e;
@@ -278,13 +282,13 @@ static void addsock(curl_socket_t s, CURL *easy, int action, GlobalInfo *g)
 /* CURLMOPT_SOCKETFUNCTION */
 static int sock_cb(CURL *e, curl_socket_t s, int what, void *cbp, void *sockp)
 {
-  DPRINT("%s e %p s %i what %i cbp %p sockp %p\n",
-         __PRETTY_FUNCTION__, e, s, what, cbp, sockp);
-
   GlobalInfo *g = (GlobalInfo*) cbp;
   SockInfo *fdp = (SockInfo*) sockp;
   const char *whatstr[]={ "none", "IN", "OUT", "INOUT", "REMOVE"};
 
+  printf("%s e %p s %i what %i cbp %p sockp %p\n",
+         __PRETTY_FUNCTION__, e, s, what, cbp, sockp);
+
   fprintf(MSG_OUT,
           "socket callback: s=%d e=%p what=%s ", s, e, whatstr[what]);
   if(what == CURL_POLL_REMOVE) {
@@ -317,22 +321,22 @@ static size_t write_cb(void *ptr, size_t size, size_t nmemb, void *data)
   return realsize;
 }
 
-
-/* CURLOPT_PROGRESSFUNCTION */
-static int prog_cb(void *p, double dltotal, double dlnow, double ult,
-                   double uln)
+/* CURLOPT_XFERINFOFUNCTION */
+static int xferinfo_cb(void *p, curl_off_t dltotal, curl_off_t dlnow,
+                       curl_off_t ult, curl_off_t uln)
 {
   ConnInfo *conn = (ConnInfo *)p;
   (void)ult;
   (void)uln;
 
-  fprintf(MSG_OUT, "Progress: %s (%g/%g)\n", conn->url, dlnow, dltotal);
+  fprintf(MSG_OUT, "Progress: %s (%" CURL_FORMAT_CURL_OFF_T
+          "/%" CURL_FORMAT_CURL_OFF_T ")\n", conn->url, dlnow, dltotal);
   return 0;
 }
 
 
 /* Create a new easy handle, and add it to the global curl_multi */
-static void new_conn(char *url, GlobalInfo *g)
+static void new_conn(const char *url, GlobalInfo *g)
 {
   ConnInfo *conn;
   CURLMcode rc;
@@ -354,7 +358,7 @@ static void new_conn(char *url, GlobalInfo *g)
   curl_easy_setopt(conn->easy, CURLOPT_ERRORBUFFER, conn->error);
   curl_easy_setopt(conn->easy, CURLOPT_PRIVATE, conn);
   curl_easy_setopt(conn->easy, CURLOPT_NOPROGRESS, 0L);
-  curl_easy_setopt(conn->easy, CURLOPT_PROGRESSFUNCTION, prog_cb);
+  curl_easy_setopt(conn->easy, CURLOPT_XFERINFOFUNCTION, xferinfo_cb);
   curl_easy_setopt(conn->easy, CURLOPT_PROGRESSDATA, conn);
   curl_easy_setopt(conn->easy, CURLOPT_LOW_SPEED_TIME, 3L);
   curl_easy_setopt(conn->easy, CURLOPT_LOW_SPEED_LIMIT, 10L);
@@ -376,6 +380,8 @@ static void fifo_cb(EV_P_ struct ev_io *w, int revents)
   int n = 0;
   GlobalInfo *g = (GlobalInfo *)w->data;
 
+  (void)revents;
+
   do {
     s[0]='\0';
     rv = fscanf(g->input, "%1023s%n", s, &n);
index 57047edddf0fb3eb793c6ddde353a348b50a7a60..8e8300763c740ad4528683721c1753d07beb3177 100644 (file)
@@ -118,18 +118,16 @@ static void mcode_or_die(const char *where, CURLMcode code)
 /* Check for completed transfers, and remove their easy handles */
 static void check_multi_info(GlobalInfo *g)
 {
-  char *eff_url;
   CURLMsg *msg;
   int msgs_left;
-  ConnInfo *conn;
-  CURL *easy;
-  CURLcode res;
 
   MSG_OUT("REMAINING: %d\n", g->still_running);
   while((msg = curl_multi_info_read(g->multi, &msgs_left))) {
     if(msg->msg == CURLMSG_DONE) {
-      easy = msg->easy_handle;
-      res = msg->data.result;
+      CURL *easy = msg->easy_handle;
+      CURLcode res = msg->data.result;
+      char *eff_url;
+      ConnInfo *conn;
       curl_easy_getinfo(easy, CURLINFO_PRIVATE, &conn);
       curl_easy_getinfo(easy, CURLINFO_EFFECTIVE_URL, &eff_url);
       MSG_OUT("DONE: %s => (%d) %s\n", eff_url, res, conn->error);
@@ -281,23 +279,27 @@ static size_t write_cb(void *ptr, size_t size, size_t nmemb, void *data)
   return realsize;
 }
 
-/* CURLOPT_PROGRESSFUNCTION */
-static int prog_cb(void *p, double dltotal, double dlnow, double ult,
-                   double uln)
+/* CURLOPT_XFERINFOFUNCTION */
+static int xferinfo_cb(void *p, curl_off_t dltotal, curl_off_t dlnow,
+                       curl_off_t ult, curl_off_t uln)
 {
   ConnInfo *conn = (ConnInfo *)p;
-  MSG_OUT("Progress: %s (%g/%g)\n", conn->url, dlnow, dltotal);
+  (void)ult;
+  (void)uln;
+
+  fprintf(MSG_OUT, "Progress: %s (%" CURL_FORMAT_CURL_OFF_T
+          "/%" CURL_FORMAT_CURL_OFF_T ")\n", conn->url, dlnow, dltotal);
   return 0;
 }
 
 /* Create a new easy handle, and add it to the global curl_multi */
-static void new_conn(char *url, GlobalInfo *g)
+static void new_conn(const char *url, GlobalInfo *g)
 {
   ConnInfo *conn;
   CURLMcode rc;
 
   conn = g_malloc0(sizeof(ConnInfo));
-  conn->error[0]='\0';
+  conn->error[0] = '\0';
   conn->easy = curl_easy_init();
   if(!conn->easy) {
     MSG_OUT("curl_easy_init() failed, exiting!\n");
@@ -312,7 +314,7 @@ static void new_conn(char *url, GlobalInfo *g)
   curl_easy_setopt(conn->easy, CURLOPT_ERRORBUFFER, conn->error);
   curl_easy_setopt(conn->easy, CURLOPT_PRIVATE, conn);
   curl_easy_setopt(conn->easy, CURLOPT_NOPROGRESS, SHOW_PROGRESS ? 0L : 1L);
-  curl_easy_setopt(conn->easy, CURLOPT_PROGRESSFUNCTION, prog_cb);
+  curl_easy_setopt(conn->easy, CURLOPT_XFERINFOFUNCTION, xferinfo_cb);
   curl_easy_setopt(conn->easy, CURLOPT_PROGRESSDATA, conn);
   curl_easy_setopt(conn->easy, CURLOPT_FOLLOWLOCATION, 1L);
   curl_easy_setopt(conn->easy, CURLOPT_CONNECTTIMEOUT, 30L);
@@ -386,7 +388,7 @@ int init_fifo(void)
   const char *fifo = "hiper.fifo";
   int socket;
 
-  if(lstat (fifo, &st) == 0) {
+  if(lstat(fifo, &st) == 0) {
     if((st.st_mode & S_IFMT) == S_IFREG) {
       errno = EEXIST;
       perror("lstat");
@@ -411,13 +413,12 @@ int init_fifo(void)
   return socket;
 }
 
-int main(int argc, char **argv)
+int main(void)
 {
-  GlobalInfo *g;
+  GlobalInfo *g = g_malloc0(sizeof(GlobalInfo));
   GMainLoop*gmain;
   int fd;
   GIOChannel* ch;
-  g = g_malloc0(sizeof(GlobalInfo));
 
   fd = init_fifo();
   ch = g_io_channel_unix_new(fd);
index bde30594f8d4ff569c51da118e5d2cd4e721f5c8..36d9b40e7eb2f5795bba7f47fa6cb48099c85e0f 100644 (file)
@@ -259,7 +259,7 @@ static void setsock(SockInfo *f, curl_socket_t s, CURL *e, int act,
   if(event_initialized(&f->ev)) {
     event_del(&f->ev);
   }
-  event_assign(&f->ev, g->evbase, f->sockfd, kind, event_cb, g);
+  event_assign(&f->ev, g->evbase, f->sockfd, (short)kind, event_cb, g);
   event_add(&f->ev, NULL);
 }
 
@@ -315,26 +315,27 @@ static size_t write_cb(void *ptr, size_t size, size_t nmemb, void *data)
 
 
 /* CURLOPT_PROGRESSFUNCTION */
-static int prog_cb(void *p, double dltotal, double dlnow, double ult,
-                   double uln)
+static int xferinfo_cb(void *p, curl_off_t dltotal, curl_off_t dlnow,
+                       curl_off_t ult, curl_off_t uln)
 {
   ConnInfo *conn = (ConnInfo *)p;
   (void)ult;
   (void)uln;
 
-  fprintf(MSG_OUT, "Progress: %s (%g/%g)\n", conn->url, dlnow, dltotal);
+  fprintf(MSG_OUT, "Progress: %s (%" CURL_FORMAT_CURL_OFF_T
+          "/%" CURL_FORMAT_CURL_OFF_T ")\n", conn->url, dlnow, dltotal);
   return 0;
 }
 
 
 /* Create a new easy handle, and add it to the global curl_multi */
-static void new_conn(char *url, GlobalInfo *g)
+static void new_conn(const char *url, GlobalInfo *g)
 {
   ConnInfo *conn;
   CURLMcode rc;
 
   conn = calloc(1, sizeof(ConnInfo));
-  conn->error[0]='\0';
+  conn->error[0] = '\0';
 
   conn->easy = curl_easy_init();
   if(!conn->easy) {
@@ -350,7 +351,7 @@ static void new_conn(char *url, GlobalInfo *g)
   curl_easy_setopt(conn->easy, CURLOPT_ERRORBUFFER, conn->error);
   curl_easy_setopt(conn->easy, CURLOPT_PRIVATE, conn);
   curl_easy_setopt(conn->easy, CURLOPT_NOPROGRESS, 0L);
-  curl_easy_setopt(conn->easy, CURLOPT_PROGRESSFUNCTION, prog_cb);
+  curl_easy_setopt(conn->easy, CURLOPT_XFERINFOFUNCTION, xferinfo_cb);
   curl_easy_setopt(conn->easy, CURLOPT_PROGRESSDATA, conn);
   curl_easy_setopt(conn->easy, CURLOPT_FOLLOWLOCATION, 1L);
   fprintf(MSG_OUT,
index ee3e023a2c2883ca62d6d0a21e04645f4c1a90d6..f8a463a7885e95a8052a840709dade579e557cd7 100644 (file)
@@ -43,7 +43,7 @@
 //  Case-insensitive string comparison
 //
 
-#ifdef _MSC_VER
+#ifdef _WIN32
 #define COMPARE(a, b) (!_stricmp((a), (b)))
 #else
 #define COMPARE(a, b) (!strcasecmp((a), (b)))
@@ -71,8 +71,8 @@ static std::string buffer;
 //  libcurl write callback function
 //
 
-static int writer(char *data, size_t size, size_t nmemb,
-                  std::string *writerData)
+static size_t writer(char *data, size_t size, size_t nmemb,
+                     std::string *writerData)
 {
   if(writerData == NULL)
     return 0;
@@ -86,7 +86,7 @@ static int writer(char *data, size_t size, size_t nmemb,
 //  libcurl connection initialization
 //
 
-static bool init(CURL *&conn, char *url)
+static bool init(CURL *&conn, const char *url)
 {
   CURLcode code;
 
@@ -140,7 +140,7 @@ static void StartElement(void *voidContext,
 {
   Context *context = static_cast<Context *>(voidContext);
 
-  if(COMPARE(reinterpret_cast<char *>(name), "TITLE")) {
+  if(COMPARE(reinterpret_cast<const char *>(name), "TITLE")) {
     context->title = "";
     context->addTitle = true;
   }
@@ -156,7 +156,7 @@ static void EndElement(void *voidContext,
 {
   Context *context = static_cast<Context *>(voidContext);
 
-  if(COMPARE(reinterpret_cast<char *>(name), "TITLE"))
+  if(COMPARE(reinterpret_cast<const char *>(name), "TITLE"))
     context->addTitle = false;
 }
 
@@ -169,7 +169,8 @@ static void handleCharacters(Context *context,
                              int length)
 {
   if(context->addTitle)
-    context->title.append(reinterpret_cast<char *>(chars), length);
+    context->title.append(reinterpret_cast<const char *>(chars),
+                          (unsigned long)length);
 }
 
 //
@@ -230,6 +231,11 @@ static htmlSAXHandler saxHandler =
   NULL,
   NULL,
   cdata,
+  NULL,
+  0,
+  0,
+  0,
+  0,
   NULL
 };
 
@@ -246,7 +252,7 @@ static void parseHtml(const std::string &html,
   ctxt = htmlCreatePushParserCtxt(&saxHandler, &context, "", 0, "",
                                   XML_CHAR_ENCODING_NONE);
 
-  htmlParseChunk(ctxt, html.c_str(), html.size(), 0);
+  htmlParseChunk(ctxt, html.c_str(), (int)html.size(), 0);
   htmlParseChunk(ctxt, "", 0, 1);
 
   htmlFreeParserCtxt(ctxt);
index 44e9203e5d0e32ed9ef1d74f4c60e7dbbd3f94cc..450ac7871c2d697762eb7404b869ec3c405ecc3e 100644 (file)
@@ -32,9 +32,9 @@
 #include <event2/event.h>
 #include <curl/curl.h>
 
-struct event_base *base;
-CURLM *curl_handle;
-struct event *timeout;
+static struct event_base *base;
+static CURLM *curl_handle;
+static struct event *timeout;
 
 typedef struct curl_context_s {
   struct event *event;
@@ -127,6 +127,8 @@ static void curl_perform(int fd, short event, void *arg)
   int flags = 0;
   curl_context_t *context;
 
+  (void)fd;
+
   if(event & EV_READ)
     flags |= CURL_CSELECT_IN;
   if(event & EV_WRITE)
@@ -143,6 +145,9 @@ static void curl_perform(int fd, short event, void *arg)
 static void on_timeout(evutil_socket_t fd, short events, void *arg)
 {
   int running_handles;
+  (void)fd;
+  (void)events;
+  (void)arg;
   curl_multi_socket_action(curl_handle, CURL_SOCKET_TIMEOUT, 0,
                            &running_handles);
   check_multi_info();
@@ -150,13 +155,15 @@ static void on_timeout(evutil_socket_t fd, short events, void *arg)
 
 static int start_timeout(CURLM *multi, long timeout_ms, void *userp)
 {
+  (void)multi;
+  (void)userp;
   if(timeout_ms < 0) {
     evtimer_del(timeout);
   }
   else {
+    struct timeval tv;
     if(timeout_ms == 0)
       timeout_ms = 1; /* 0 means call socket_action asap */
-    struct timeval tv;
     tv.tv_sec = timeout_ms / 1000;
     tv.tv_usec = (timeout_ms % 1000) * 1000;
     evtimer_del(timeout);
@@ -166,11 +173,14 @@ static int start_timeout(CURLM *multi, long timeout_ms, void *userp)
 }
 
 static int handle_socket(CURL *easy, curl_socket_t s, int action, void *userp,
-                  void *socketp)
+                         void *socketp)
 {
   curl_context_t *curl_context;
   int events = 0;
 
+  (void)easy;
+  (void)userp;
+
   switch(action) {
   case CURL_POLL_IN:
   case CURL_POLL_OUT:
@@ -188,8 +198,8 @@ static int handle_socket(CURL *easy, curl_socket_t s, int action, void *userp,
     events |= EV_PERSIST;
 
     event_del(curl_context->event);
-    event_assign(curl_context->event, base, curl_context->sockfd, events,
-      curl_perform, curl_context);
+    event_assign(curl_context->event, base, curl_context->sockfd,
+      (short)events, curl_perform, curl_context);
     event_add(curl_context->event, NULL);
 
     break;
index 27a0731943e55a08d6c54e575f2185f5a6b16457..1b3fca0de0405f7f258b3aaa14444c7f3f47f8a0 100644 (file)
@@ -177,7 +177,7 @@ static int cb_timeout(CURLM *multi, long timeout_ms,
     if(timeout_ms == 0)
       timeout_ms = 1; /* 0 means call curl_multi_socket_action asap but NOT
                          within the callback itself */
-    uv_timer_start(&uv->timeout, on_uv_timeout, timeout_ms,
+    uv_timer_start(&uv->timeout, on_uv_timeout, (uint64_t)timeout_ms,
                    0); /* do not repeat */
   }
   return 0;
index 299edd57a719fb2d215b41dc3c88141f3b9fa5ea..3b500c7652df00beef98a19040d0ac05f12dc1be 100644 (file)
@@ -41,7 +41,7 @@
   https://curl.se/libcurl/c/threadsafe.html
 
 */
-const char * const urls[NUMT]= {
+static const char * const urls[NUMT]= {
   "https://curl.se/",
   "ftp://example.com/",
   "https://example.net/",
@@ -67,7 +67,7 @@ static void *pull_one_url(void *url)
    void * (*start_func)(void *), void *arg);
 */
 
-int main(int argc, char **argv)
+int main(void)
 {
   pthread_t tid[NUMT];
   int i;
index befb8f3c0bc81abc281ce3565c4a7693638f9bea..bb5721aca695d91960c0fcf69b6b4f380f62dc72 100644 (file)
@@ -47,7 +47,8 @@ static size_t wrfu(void *ptr, size_t size, size_t nmemb, void *stream)
   (void)stream;
   (void)ptr;
 
-  res = curl_easy_getinfo(curl, CURLINFO_TLS_SESSION, &info);
+  res = CURL_IGNORE_DEPRECATION(
+    curl_easy_getinfo(curl, CURLINFO_TLS_SESSION, &info));
 
   if(!res) {
     switch(info->backend) {
index b39f99caf267982218ab6a03202badfc34a5e554..7683e9bf80f6c703af762e922dd40e7cbb99a501 100644 (file)
@@ -77,6 +77,8 @@
 
 #ifdef _WIN32
 #include <windows.h>
+#else
+#error "This example requires Windows."
 #endif
 
 
@@ -92,36 +94,38 @@ typedef struct
   char timeserver[MAX_STRING1];
 } conf_t;
 
-const char DefaultTimeServer[3][MAX_STRING1] =
+static const char DefaultTimeServer[3][MAX_STRING1] =
 {
   "https://nist.time.gov/",
   "https://www.google.com/"
 };
 
-const char *DayStr[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
-const char *MthStr[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun",
-                        "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
+static const char *DayStr[] = {
+  "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
+static const char *MthStr[] = {
+  "Jan", "Feb", "Mar", "Apr", "May", "Jun",
+  "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
 
-int  ShowAllHeader;
-int  AutoSyncTime;
-SYSTEMTIME SYSTime;
-SYSTEMTIME LOCALTime;
+static int ShowAllHeader;
+static int AutoSyncTime;
+static SYSTEMTIME SYSTime;
+static SYSTEMTIME LOCALTime;
 
 #define HTTP_COMMAND_HEAD       0
 #define HTTP_COMMAND_GET        1
 
 
-size_t SyncTime_CURL_WriteOutput(void *ptr, size_t size, size_t nmemb,
-                                 void *stream)
+static size_t SyncTime_CURL_WriteOutput(void *ptr, size_t size, size_t nmemb,
+                                        void *stream)
 {
   fwrite(ptr, size, nmemb, stream);
   return (nmemb*size);
 }
 
-size_t SyncTime_CURL_WriteHeader(void *ptr, size_t size, size_t nmemb,
-                                 void *stream)
+static size_t SyncTime_CURL_WriteHeader(void *ptr, size_t size, size_t nmemb,
+                                        void *stream)
 {
-  char  TmpStr1[26], TmpStr2[26];
+  char TmpStr1[26], TmpStr2[26];
 
   (void)stream;
 
@@ -149,7 +153,7 @@ size_t SyncTime_CURL_WriteHeader(void *ptr, size_t size, size_t nmemb,
           SYSTime.wMilliseconds = 500;    /* adjust to midpoint, 0.5 sec */
           for(i = 0; i < 12; i++) {
             if(strcmp(MthStr[i], TmpStr2) == 0) {
-              SYSTime.wMonth = i + 1;
+              SYSTime.wMonth = (WORD)(i + 1);
               break;
             }
           }
@@ -170,8 +174,8 @@ size_t SyncTime_CURL_WriteHeader(void *ptr, size_t size, size_t nmemb,
   return (nmemb*size);
 }
 
-void SyncTime_CURL_Init(CURL *curl, char *proxy_port,
-                        char *proxy_user_password)
+static void SyncTime_CURL_Init(CURL *curl, const char *proxy_port,
+                               const char *proxy_user_password)
 {
   if(strlen(proxy_port) > 0)
     curl_easy_setopt(curl, CURLOPT_PROXY, proxy_port);
@@ -179,15 +183,13 @@ void SyncTime_CURL_Init(CURL *curl, char *proxy_port,
   if(strlen(proxy_user_password) > 0)
     curl_easy_setopt(curl, CURLOPT_PROXYUSERPWD, proxy_user_password);
 
-#ifdef SYNCTIME_UA
   curl_easy_setopt(curl, CURLOPT_USERAGENT, SYNCTIME_UA);
-#endif
   curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, SyncTime_CURL_WriteOutput);
   curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, SyncTime_CURL_WriteHeader);
 }
 
-int SyncTime_CURL_Fetch(CURL *curl, char *URL_Str, char *OutFileName,
-                        int HttpGetBody)
+static CURLcode SyncTime_CURL_Fetch(CURL *curl, const char *URL_Str,
+                                    const char *OutFileName, int HttpGetBody)
 {
   FILE *outfile;
   CURLcode res;
@@ -207,11 +209,11 @@ int SyncTime_CURL_Fetch(CURL *curl, char *URL_Str, char *OutFileName,
   return res;  /* (CURLE_OK) */
 }
 
-void showUsage(void)
+static void showUsage(void)
 {
-  fprintf(stderr, "SYNCTIME: Synchronising computer clock with time server"
+  fprintf(stderr, "synctime: Synchronising computer clock with time server"
           " using HTTP protocol.\n");
-  fprintf(stderr, "Usage   : SYNCTIME [Option]\n");
+  fprintf(stderr, "Usage   : synctime [Option]\n");
   fprintf(stderr, "Options :\n");
   fprintf(stderr, " --server=WEBSERVER        Use this time server instead"
           " of default.\n");
@@ -227,7 +229,7 @@ void showUsage(void)
   return;
 }
 
-int conf_init(conf_t *conf)
+static int conf_init(conf_t *conf)
 {
   int i;
 
@@ -305,9 +307,9 @@ int main(int argc, char *argv[])
     tzonediffWord  = (int)(tzonediffFloat/3600.0);
 
     if((double)(tzonediffWord * 3600) == tzonediffFloat)
-      snprintf(tzoneBuf, 15, "%+03d'00'", tzonediffWord);
+      snprintf(tzoneBuf, sizeof(tzoneBuf), "%+03d'00'", tzonediffWord);
     else
-      snprintf(tzoneBuf, 15, "%+03d'30'", tzonediffWord);
+      snprintf(tzoneBuf, sizeof(tzoneBuf), "%+03d'30'", tzonediffWord);
 
     /* Get current system time and local time */
     GetSystemTime(&SYSTime);
index c903fced00434e422cac45223dfe93d2daa367dd..263400afd8a2999b8953e23fd1cebd883a85d7fe 100644 (file)
@@ -45,7 +45,7 @@
 #define NUMT 4
 
 /* List of URLs to fetch.*/
-const char * const urls[]= {
+static const char * const urls[]= {
   "https://www.example.com/",
   "https://www2.example.com/",
   "https://www3.example.com/",
index 7b338cd98aefc850e54ffae435bb1b2ae90a23e8..02c53c82c6c068be198b25abe174843c3e96faff 100644 (file)
  * must be used in real circumstances when a secure connection is required.
  */
 
+#ifndef OPENSSL_SUPPRESS_DEPRECATED
+#define OPENSSL_SUPPRESS_DEPRECATED
+#endif
+
 #include <openssl/ssl.h>
 #include <openssl/x509.h>
 #include <openssl/pem.h>
@@ -51,6 +55,11 @@ static CURLcode sslctx_function(CURL *curl, void *sslctx, void *parm)
   RSA *rsa = NULL;
   int ret;
 
+#if defined(__GNUC__) || defined(__clang__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Woverlength-strings"
+#endif
+
   const char *mypem = /* www.cacert.org */
     "-----BEGIN CERTIFICATE-----\n"\
     "MIIHPTCCBSWgAwIBAgIBADANBgkqhkiG9w0BAQQFADB5MRAwDgYDVQQKEwdSb290\n"\
@@ -115,6 +124,10 @@ static CURLcode sslctx_function(CURL *curl, void *sslctx, void *parm)
     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
     "-----END RSA PRIVATE KEY-----\n";
 
+#if defined(__GNUC__) || defined(__clang__)
+#pragma GCC diagnostic pop
+#endif
+
   (void)curl; /* avoid warnings */
   (void)parm; /* avoid warnings */
 
@@ -223,5 +236,5 @@ int main(void)
 
   curl_easy_cleanup(ch);
   curl_global_cleanup();
-  return rv;
+  return (int)rv;
 }
index d779e6e7cfacef966e059f2aa1f5c26673839ce4..208682ef0dc25eba4a22310b76d0300e338cb274 100644 (file)
@@ -59,6 +59,9 @@ static void startElement(void *userData, const XML_Char *name,
   state->tags++;
   state->depth++;
 
+  (void)name;
+  (void)atts;
+
   /* Get a clean slate for reading in character data. */
   free(state->characters.memory);
   state->characters.memory = NULL;
@@ -70,7 +73,7 @@ static void characterDataHandler(void *userData, const XML_Char *s, int len)
   struct ParserStruct *state = (struct ParserStruct *) userData;
   struct MemoryStruct *mem = &state->characters;
 
-  char *ptr = realloc(mem->memory, mem->size + len + 1);
+  char *ptr = realloc(mem->memory, mem->size + (unsigned long)len + 1);
   if(!ptr) {
     /* Out of memory. */
     fprintf(stderr, "Not enough memory (realloc returned NULL).\n");
@@ -80,7 +83,7 @@ static void characterDataHandler(void *userData, const XML_Char *s, int len)
 
   mem->memory = ptr;
   memcpy(&(mem->memory[mem->size]), s, len);
-  mem->size += len;
+  mem->size += (unsigned long)len;
   mem->memory[mem->size] = 0;
 }
 
@@ -100,8 +103,8 @@ static size_t parseStreamCallback(void *contents, size_t length, size_t nmemb,
   struct ParserStruct *state = (struct ParserStruct *) XML_GetUserData(parser);
 
   /* Only parse if we are not already in a failure state. */
-  if(state->ok && XML_Parse(parser, contents, real_size, 0) == 0) {
-    int error_code = XML_GetErrorCode(parser);
+  if(state->ok && XML_Parse(parser, contents, (int)real_size, 0) == 0) {
+    enum XML_Error error_code = XML_GetErrorCode(parser);
     fprintf(stderr, "Parsing response buffer of length %lu failed"
             " with error code %d (%s).\n",
             real_size, error_code, XML_ErrorString(error_code));
@@ -147,7 +150,7 @@ int main(void)
   else if(state.ok) {
     /* Expat requires one final call to finalize parsing. */
     if(XML_Parse(parser, NULL, 0, 1) == 0) {
-      int error_code = XML_GetErrorCode(parser);
+      enum XML_Error error_code = XML_GetErrorCode(parser);
       fprintf(stderr, "Finalizing parsing failed with error code %d (%s).\n",
               error_code, XML_ErrorString(error_code));
     }