Re: [PATCH] http: fix some printf format warnings on 32-bit builds
flat view
From: Eric Sunshine <hidden>
Date: 2016-06-15 23:07:13
On Tue, Nov 10, 2015 at 7:23 PM, Ramsay Jones [off-list ref] wrote:
Commit f8117f55 ("http: use off_t to store partial file size",
02-11-2015) changed the type of some variables from long to off_t.
The 32-bit build, which enables the large filesystem interface
(_FILE_OFFSET_BITS == 64), defines the off_t type as a 64-bit
integer, whereas long is a 32-bit integer. This results in a couple
of printf format warnings.
In order to suppress the warnings, change the format specifier to use
the PRIuMAX macro and cast the off_t argument to uintmax_t. (See also
the http_opt_request_remainder() function, which uses the same
solution).I just ran across the problem when building 'next' on my Mac and was about to investigate, so am happy to find that the work has already been done. Thanks. My machine is 64-bit, though, so perhaps it's misleading to characterize this as a fix for 32-bit builds. In particular, off_t is 'long long' on this machine, so it complains about the "long" format specifier.
quoted hunk ↗ jump to hunk
Signed-off-by: Ramsay Jones <redacted> ---diff --git a/http.c b/http.c index 42f29ce..2532976 100644 --- a/http.c +++ b/http.c@@ -1617,8 +1617,8 @@ struct http_pack_request *new_http_pack_request( if (prev_posn>0) { if (http_is_verbose) fprintf(stderr, - "Resuming fetch of pack %s at byte %ld\n", - sha1_to_hex(target->sha1), prev_posn); + "Resuming fetch of pack %s at byte %"PRIuMAX"\n", + sha1_to_hex(target->sha1), (uintmax_t)prev_posn); http_opt_request_remainder(preq->slot->curl, prev_posn); }@@ -1772,8 +1772,8 @@ struct http_object_request *new_http_object_request(const char *base_url, if (prev_posn>0) { if (http_is_verbose) fprintf(stderr, - "Resuming fetch of object %s at byte %ld\n", - hex, prev_posn); + "Resuming fetch of object %s at byte %"PRIuMAX"\n", + hex, (uintmax_t)prev_posn); http_opt_request_remainder(freq->slot->curl, prev_posn); } --2.6.0