Re: [PATCH] http: fix some printf format warnings on 32-bit builds
- From
Ramsay Jones <ramsay@ramsayjones.plus.com>
- Date
- Nov 11, 2015, 17:47 UTC
- Message-ID
- <56437F3F.7050305@ramsayjones.plus.com>
- In-Reply-To
- <CAPig+cR+jXgw7+kUK9vrZxNbytwyK3gzgm1YPf_6s57_UxPaBA@mail.gmail.com>
On 11/11/15 01:22, Eric Sunshine wrote:
Show 17 quoted lines
> On Tue, Nov 10, 2015 at 7:23 PM, Ramsay Jones
> <ramsay@ramsayjones.plus.com> 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.Hmm, interesting. I've never used a Mac, so please forgive my ignorance ...
> 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.
... but this seems to imply that sizeof(long) is 4 on your machine, right? (on x86_64 linux it's 8, which is why I hadn't noticed before).
Jeff, do you need me to re-word the commit message?
ATB, Ramsay Jones
Show 32 quoted lines
>
>> Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
>> ---
>> 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
>