{"thread":{"id":"14282","subject":"[PATCH/RFC] work around recent curl/gcc warnings","startedAt":"2008-07-04T04:38:07Z","lastAt":"2008-07-04T04:38:07Z","messageCount":1,"participants":["Junio C Hamano"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"82197","messageId":"7vhcb6w9g0.fsf@gitster.siamese.dyndns.org","threadId":"14282","inReplyTo":null,"subject":"[PATCH/RFC] work around recent curl/gcc warnings","fromName":"Junio C Hamano","fromEmail":"junio@pobox.com","sentAt":"2008-07-04T04:38:07Z","receivedAt":"2008-07-04T04:38:07Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"After master.k.org upgrade, I started seeing these warning messages:\n\n    transport.c: In function 'get_refs_via_curl':\n    transport.c:458: error: call to '_curl_easy_setopt_err_write_callback' declared with attribute warning: curl_easy_setopt expects a curl_write_callback argument for this option\n\nIt appears that the header wants to enforce the function signature for\nfwrite_buffer to be compatible with that of fwrite() or\n(*curl_write_callback).\n\nThis patch seems to work the issue around.\n\n---\n http.c |   13 +++++++------\n http.h |    9 +++------\n 2 files changed, 10 insertions(+), 12 deletions(-)\n\ndiff --git a/http.c b/http.c\nindex 105dc93..ad14640 100644\n--- a/http.c\n+++ b/http.c\n@@ -30,10 +30,11 @@ static struct curl_slist *pragma_header;\n \n static struct active_request_slot *active_queue_head = NULL;\n \n-size_t fread_buffer(void *ptr, size_t eltsize, size_t nmemb,\n-\t\t\t   struct buffer *buffer)\n+size_t fread_buffer(void *ptr, size_t eltsize, size_t nmemb, void *buffer_)\n {\n \tsize_t size = eltsize * nmemb;\n+\tstruct buffer *buffer = buffer_;\n+\n \tif (size > buffer->buf.len - buffer->posn)\n \t\tsize = buffer->buf.len - buffer->posn;\n \tmemcpy(ptr, buffer->buf.buf + buffer->posn, size);\n@@ -42,17 +43,17 @@ size_t fread_buffer(void *ptr, size_t eltsize, size_t nmemb,\n \treturn size;\n }\n \n-size_t fwrite_buffer(const void *ptr, size_t eltsize,\n-\t\t\t    size_t nmemb, struct strbuf *buffer)\n+size_t fwrite_buffer(const void *ptr, size_t eltsize, size_t nmemb, void *buffer_)\n {\n \tsize_t size = eltsize * nmemb;\n+\tstruct strbuf *buffer = buffer_;\n+\n \tstrbuf_add(buffer, ptr, size);\n \tdata_received++;\n \treturn size;\n }\n \n-size_t fwrite_null(const void *ptr, size_t eltsize,\n-\t\t\t  size_t nmemb, struct strbuf *buffer)\n+size_t fwrite_null(const void *ptr, size_t eltsize, size_t nmemb, void *strbuf)\n {\n \tdata_received++;\n \treturn eltsize * nmemb;\ndiff --git a/http.h b/http.h\nindex a04fc6a..905b462 100644\n--- a/http.h\n+++ b/http.h\n@@ -64,12 +64,9 @@ struct buffer\n };\n \n /* Curl request read/write callbacks */\n-extern size_t fread_buffer(void *ptr, size_t eltsize, size_t nmemb,\n-\t\t\t   struct buffer *buffer);\n-extern size_t fwrite_buffer(const void *ptr, size_t eltsize,\n-\t\t\t    size_t nmemb, struct strbuf *buffer);\n-extern size_t fwrite_null(const void *ptr, size_t eltsize,\n-\t\t\t  size_t nmemb, struct strbuf *buffer);\n+extern size_t fread_buffer(void *ptr, size_t eltsize, size_t nmemb, void *strbuf);\n+extern size_t fwrite_buffer(const void *ptr, size_t eltsize, size_t nmemb, void *strbuf);\n+extern size_t fwrite_null(const void *ptr, size_t eltsize, size_t nmemb, void *strbuf);\n \n /* Slot lifecycle functions */\n extern struct active_request_slot *get_active_slot(void);\n"}]}