Re: [PATCH] http: fix some printf format warnings on 32-bit builds
- From
Ramsay Jones <ramsay@ramsayjones.plus.com>
- Date
- Nov 11, 2015, 20:58 UTC
- Message-ID
- <5643ABF0.5080207@ramsayjones.plus.com>
- In-Reply-To
- <CAPig+cS54yTsZ8NWjyh6kj6nXy966EkYPHh_sjMbMcDGemnFuA@mail.gmail.com>
On 11/11/15 20:31, Eric Sunshine wrote:
Show 30 quoted lines
> On Wed, Nov 11, 2015 at 12:47 PM, Ramsay Jones
> <ramsay@ramsayjones.plus.com> wrote:
>> On 11/11/15 01:22, Eric Sunshine wrote:
>>> On Tue, Nov 10, 2015 at 7:23 PM, Ramsay Jones
>>> <ramsay@ramsayjones.plus.com> wrote:
>>> 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).
>
> This code on my Mac:
>
> printf("sizeof(long)=%zu\n", sizeof(long));
> printf("sizeof(long long)=%zu\n", sizeof(long long));
> printf("sizeof(off_t)=%zu\n", sizeof(off_t));
>
> produces:
>
> sizeof(long)=8
> sizeof(long long)=8
> sizeof(off_t)=8
>
> The fact that 'long' and 'long long' happen to be the same size (in
> this case) is immaterial. What is important is that the code is just
> wrong to be using the "%l" specifier for 'long' when the actual
> datatype is 'long long' (which is what 'off_t' is under-the-hood in
> this case).Ah. OK, so %ld for long and %lld for long long, I suppose.
Hmm, not that it matters, but I wonder what the PRId64 macro is. ;-)
ATB, Ramsay Jones