From 37fb50a858921846a7bbb4428cc4b2bb66e182af Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Fri, 20 Dec 2024 02:00:22 +0100 Subject: [PATCH] examples/complicated: fix warnings, bump deprecated callback, tidy up Also: make them C89, add consts. Closes #15785 --- docs/examples/cacertinmem.c | 11 ++++- docs/examples/crawler.c | 77 +++++++++++++++++++++-------------- docs/examples/ephiperfifo.c | 4 +- docs/examples/evhiperfifo.c | 50 +++++++++++++---------- docs/examples/ghiper.c | 35 ++++++++-------- docs/examples/hiperfifo.c | 15 +++---- docs/examples/htmltitle.cpp | 22 ++++++---- docs/examples/multi-event.c | 24 +++++++---- docs/examples/multi-uv.c | 2 +- docs/examples/multithread.c | 4 +- docs/examples/sessioninfo.c | 3 +- docs/examples/synctime.c | 54 ++++++++++++------------ docs/examples/threaded-ssl.c | 2 +- docs/examples/usercertinmem.c | 15 ++++++- docs/examples/xmlstream.c | 13 +++--- 15 files changed, 199 insertions(+), 132 deletions(-) diff --git a/docs/examples/cacertinmem.c b/docs/examples/cacertinmem.c index ff748db4b4..b095b46166 100644 --- a/docs/examples/cacertinmem.c +++ b/docs/examples/cacertinmem.c @@ -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; } diff --git a/docs/examples/crawler.c b/docs/examples/crawler.c index 2ff4ae7145..d2f89db9dc 100644 --- a/docs/examples/crawler.c +++ b/docs/examples/crawler.c @@ -30,14 +30,6 @@ * */ -/* 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 #include #include @@ -47,9 +39,18 @@ char *start_page = "https://www.reuters.com"; #include #include -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; diff --git a/docs/examples/ephiperfifo.c b/docs/examples/ephiperfifo.c index 8edcd2015d..2104a6b887 100644 --- a/docs/examples/ephiperfifo.c +++ b/docs/examples/ephiperfifo.c @@ -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) { diff --git a/docs/examples/evhiperfifo.c b/docs/examples/evhiperfifo.c index 8997dff11d..fc320dc252 100644 --- a/docs/examples/evhiperfifo.c +++ b/docs/examples/evhiperfifo.c @@ -75,8 +75,6 @@ callback. #include #include -#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); diff --git a/docs/examples/ghiper.c b/docs/examples/ghiper.c index 57047edddf..8e8300763c 100644 --- a/docs/examples/ghiper.c +++ b/docs/examples/ghiper.c @@ -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); diff --git a/docs/examples/hiperfifo.c b/docs/examples/hiperfifo.c index bde30594f8..36d9b40e7e 100644 --- a/docs/examples/hiperfifo.c +++ b/docs/examples/hiperfifo.c @@ -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, diff --git a/docs/examples/htmltitle.cpp b/docs/examples/htmltitle.cpp index ee3e023a2c..f8a463a788 100644 --- a/docs/examples/htmltitle.cpp +++ b/docs/examples/htmltitle.cpp @@ -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(voidContext); - if(COMPARE(reinterpret_cast(name), "TITLE")) { + if(COMPARE(reinterpret_cast(name), "TITLE")) { context->title = ""; context->addTitle = true; } @@ -156,7 +156,7 @@ static void EndElement(void *voidContext, { Context *context = static_cast(voidContext); - if(COMPARE(reinterpret_cast(name), "TITLE")) + if(COMPARE(reinterpret_cast(name), "TITLE")) context->addTitle = false; } @@ -169,7 +169,8 @@ static void handleCharacters(Context *context, int length) { if(context->addTitle) - context->title.append(reinterpret_cast(chars), length); + context->title.append(reinterpret_cast(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); diff --git a/docs/examples/multi-event.c b/docs/examples/multi-event.c index 44e9203e5d..450ac7871c 100644 --- a/docs/examples/multi-event.c +++ b/docs/examples/multi-event.c @@ -32,9 +32,9 @@ #include #include -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; diff --git a/docs/examples/multi-uv.c b/docs/examples/multi-uv.c index 27a0731943..1b3fca0de0 100644 --- a/docs/examples/multi-uv.c +++ b/docs/examples/multi-uv.c @@ -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; diff --git a/docs/examples/multithread.c b/docs/examples/multithread.c index 299edd57a7..3b500c7652 100644 --- a/docs/examples/multithread.c +++ b/docs/examples/multithread.c @@ -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; diff --git a/docs/examples/sessioninfo.c b/docs/examples/sessioninfo.c index befb8f3c0b..bb5721aca6 100644 --- a/docs/examples/sessioninfo.c +++ b/docs/examples/sessioninfo.c @@ -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) { diff --git a/docs/examples/synctime.c b/docs/examples/synctime.c index b39f99caf2..7683e9bf80 100644 --- a/docs/examples/synctime.c +++ b/docs/examples/synctime.c @@ -77,6 +77,8 @@ #ifdef _WIN32 #include +#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); diff --git a/docs/examples/threaded-ssl.c b/docs/examples/threaded-ssl.c index c903fced00..263400afd8 100644 --- a/docs/examples/threaded-ssl.c +++ b/docs/examples/threaded-ssl.c @@ -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/", diff --git a/docs/examples/usercertinmem.c b/docs/examples/usercertinmem.c index 7b338cd98a..02c53c82c6 100644 --- a/docs/examples/usercertinmem.c +++ b/docs/examples/usercertinmem.c @@ -31,6 +31,10 @@ * must be used in real circumstances when a secure connection is required. */ +#ifndef OPENSSL_SUPPRESS_DEPRECATED +#define OPENSSL_SUPPRESS_DEPRECATED +#endif + #include #include #include @@ -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; } diff --git a/docs/examples/xmlstream.c b/docs/examples/xmlstream.c index d779e6e7cf..208682ef0d 100644 --- a/docs/examples/xmlstream.c +++ b/docs/examples/xmlstream.c @@ -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)); } -- 2.47.3