Skip to content

Commit a7c060c

Browse files
committed
curl: pass long values where expected
As of Homebrew's update to cURL v8.14.0, there are new compile errors to be observed in the `osx-gcc` job of Git's CI builds: In file included from http.h:8, from imap-send.c:36: In function 'setup_curl', inlined from 'curl_append_msgs_to_imap' at imap-send.c:1460:9, inlined from 'cmd_main' at imap-send.c:1581:9: /usr/local/Cellar/curl/8.14.0/include/curl/typecheck-gcc.h:50:15: error: call to '_curl_easy_setopt_err_long' declared with attribute warning: curl_easy_setopt expects a long argument [-Werror=attribute-warning] 50 | _curl_easy_setopt_err_long(); \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/local/Cellar/curl/8.14.0/include/curl/curl.h:54:7: note: in definition of macro 'CURL_IGNORE_DEPRECATION' 54 | statements \ | ^~~~~~~~~~ imap-send.c:1423:9: note: in expansion of macro 'curl_easy_setopt' 1423 | curl_easy_setopt(curl, CURLOPT_PORT, srvc->port); | ^~~~~~~~~~~~~~~~ [... many more instances of nearly identical warnings...] See for example this CI workflow run: https://github.com/git/git/actions/runs/15454602308/job/43504278284#step:4:307 The most likely explanation is the entry "typecheck-gcc.h: fix the typechecks" in cURL's release notes (https://curl.se/ch/8.14.0.html). Nearly identical compile errors afflicted recently-updated Debian setups, which have been addressed by `jk/curl-easy-setopt-typefix`. However, on macOS Git is built with different build options, which uncovered more instances of `int` values that need to be cast to constants, which were not covered by 6f11c42 (curl: fix integer constant typechecks with curl_easy_setopt(), 2025-06-04). Let's explicitly convert even those remaining `int` constants in `curl_easy_setopt()` calls to `long` parameters. In addition to looking at the compile errors of the `osx-gcc` job, I verified that there are no other instances of the same issue that need to be handled in this manner (and that might not be caught by our CI builds because of yet other build options that might skip those code parts), I ran the following command and inspected all 23 results manually to ensure that the fix is now actually complete: git grep -n curl_easy_setopt | grep -ve ',.*, *[A-Za-z_"&]' \ -e ',.*, *[-0-9]*L)' \ -e ',.*,.* (long)' Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
1 parent c550f2f commit a7c060c

File tree

3 files changed

+17
-17
lines changed

3 files changed

+17
-17
lines changed

http-push.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -204,17 +204,17 @@ static void curl_setup_http(CURL *curl, const char *url,
204204
const char *custom_req, struct buffer *buffer,
205205
curl_write_callback write_fn)
206206
{
207-
curl_easy_setopt(curl, CURLOPT_UPLOAD, 1);
207+
curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
208208
curl_easy_setopt(curl, CURLOPT_URL, url);
209209
curl_easy_setopt(curl, CURLOPT_INFILE, buffer);
210210
curl_easy_setopt(curl, CURLOPT_INFILESIZE, buffer->buf.len);
211211
curl_easy_setopt(curl, CURLOPT_READFUNCTION, fread_buffer);
212212
curl_easy_setopt(curl, CURLOPT_SEEKFUNCTION, seek_buffer);
213213
curl_easy_setopt(curl, CURLOPT_SEEKDATA, buffer);
214214
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_fn);
215-
curl_easy_setopt(curl, CURLOPT_NOBODY, 0);
215+
curl_easy_setopt(curl, CURLOPT_NOBODY, 0L);
216216
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, custom_req);
217-
curl_easy_setopt(curl, CURLOPT_UPLOAD, 1);
217+
curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
218218
}
219219

220220
static struct curl_slist *get_dav_token_headers(struct remote_lock *lock, enum dav_header_flag options)

http.c

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1533,9 +1533,9 @@ struct active_request_slot *get_active_slot(void)
15331533
curl_easy_setopt(slot->curl, CURLOPT_WRITEFUNCTION, NULL);
15341534
curl_easy_setopt(slot->curl, CURLOPT_POSTFIELDS, NULL);
15351535
curl_easy_setopt(slot->curl, CURLOPT_POSTFIELDSIZE, -1L);
1536-
curl_easy_setopt(slot->curl, CURLOPT_UPLOAD, 0);
1537-
curl_easy_setopt(slot->curl, CURLOPT_HTTPGET, 1);
1538-
curl_easy_setopt(slot->curl, CURLOPT_FAILONERROR, 1);
1536+
curl_easy_setopt(slot->curl, CURLOPT_UPLOAD, 0L);
1537+
curl_easy_setopt(slot->curl, CURLOPT_HTTPGET, 1L);
1538+
curl_easy_setopt(slot->curl, CURLOPT_FAILONERROR, 1L);
15391539
curl_easy_setopt(slot->curl, CURLOPT_RANGE, NULL);
15401540

15411541
/*
@@ -1544,9 +1544,9 @@ struct active_request_slot *get_active_slot(void)
15441544
* HTTP_FOLLOW_* cases themselves.
15451545
*/
15461546
if (http_follow_config == HTTP_FOLLOW_ALWAYS)
1547-
curl_easy_setopt(slot->curl, CURLOPT_FOLLOWLOCATION, 1);
1547+
curl_easy_setopt(slot->curl, CURLOPT_FOLLOWLOCATION, 1L);
15481548
else
1549-
curl_easy_setopt(slot->curl, CURLOPT_FOLLOWLOCATION, 0);
1549+
curl_easy_setopt(slot->curl, CURLOPT_FOLLOWLOCATION, 0L);
15501550

15511551
curl_easy_setopt(slot->curl, CURLOPT_IPRESOLVE, git_curl_ipresolve);
15521552
curl_easy_setopt(slot->curl, CURLOPT_HTTPAUTH, http_auth_methods);
@@ -2113,12 +2113,12 @@ static int http_request(const char *url,
21132113
int ret;
21142114

21152115
slot = get_active_slot();
2116-
curl_easy_setopt(slot->curl, CURLOPT_HTTPGET, 1);
2116+
curl_easy_setopt(slot->curl, CURLOPT_HTTPGET, 1L);
21172117

21182118
if (!result) {
2119-
curl_easy_setopt(slot->curl, CURLOPT_NOBODY, 1);
2119+
curl_easy_setopt(slot->curl, CURLOPT_NOBODY, 1L);
21202120
} else {
2121-
curl_easy_setopt(slot->curl, CURLOPT_NOBODY, 0);
2121+
curl_easy_setopt(slot->curl, CURLOPT_NOBODY, 0L);
21222122
curl_easy_setopt(slot->curl, CURLOPT_WRITEDATA, result);
21232123

21242124
if (target == HTTP_REQUEST_FILE) {
@@ -2144,7 +2144,7 @@ static int http_request(const char *url,
21442144
strbuf_addstr(&buf, " no-cache");
21452145
if (options && options->initial_request &&
21462146
http_follow_config == HTTP_FOLLOW_INITIAL)
2147-
curl_easy_setopt(slot->curl, CURLOPT_FOLLOWLOCATION, 1);
2147+
curl_easy_setopt(slot->curl, CURLOPT_FOLLOWLOCATION, 1L);
21482148

21492149
headers = curl_slist_append(headers, buf.buf);
21502150

@@ -2163,7 +2163,7 @@ static int http_request(const char *url,
21632163
curl_easy_setopt(slot->curl, CURLOPT_URL, url);
21642164
curl_easy_setopt(slot->curl, CURLOPT_HTTPHEADER, headers);
21652165
curl_easy_setopt(slot->curl, CURLOPT_ENCODING, "");
2166-
curl_easy_setopt(slot->curl, CURLOPT_FAILONERROR, 0);
2166+
curl_easy_setopt(slot->curl, CURLOPT_FAILONERROR, 0L);
21672167

21682168
ret = run_one_slot(slot, &results);
21692169

@@ -2743,7 +2743,7 @@ struct http_object_request *new_http_object_request(const char *base_url,
27432743
freq->headers = object_request_headers();
27442744

27452745
curl_easy_setopt(freq->slot->curl, CURLOPT_WRITEDATA, freq);
2746-
curl_easy_setopt(freq->slot->curl, CURLOPT_FAILONERROR, 0);
2746+
curl_easy_setopt(freq->slot->curl, CURLOPT_FAILONERROR, 0L);
27472747
curl_easy_setopt(freq->slot->curl, CURLOPT_WRITEFUNCTION, fwrite_sha1_file);
27482748
curl_easy_setopt(freq->slot->curl, CURLOPT_ERRORBUFFER, freq->errorstr);
27492749
curl_easy_setopt(freq->slot->curl, CURLOPT_URL, freq->url);

remote-curl.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -971,8 +971,8 @@ static int post_rpc(struct rpc_state *rpc, int stateless_connect, int flush_rece
971971

972972
slot = get_active_slot();
973973

974-
curl_easy_setopt(slot->curl, CURLOPT_NOBODY, 0);
975-
curl_easy_setopt(slot->curl, CURLOPT_POST, 1);
974+
curl_easy_setopt(slot->curl, CURLOPT_NOBODY, 0L);
975+
curl_easy_setopt(slot->curl, CURLOPT_POST, 1L);
976976
curl_easy_setopt(slot->curl, CURLOPT_URL, rpc->service_url);
977977
curl_easy_setopt(slot->curl, CURLOPT_ENCODING, "");
978978

@@ -1059,7 +1059,7 @@ static int post_rpc(struct rpc_state *rpc, int stateless_connect, int flush_rece
10591059
rpc_in_data.check_pktline = stateless_connect;
10601060
memset(&rpc_in_data.pktline_state, 0, sizeof(rpc_in_data.pktline_state));
10611061
curl_easy_setopt(slot->curl, CURLOPT_WRITEDATA, &rpc_in_data);
1062-
curl_easy_setopt(slot->curl, CURLOPT_FAILONERROR, 0);
1062+
curl_easy_setopt(slot->curl, CURLOPT_FAILONERROR, 0L);
10631063

10641064

10651065
rpc->any_written = 0;

0 commit comments

Comments
 (0)