[PATCH] tcp.c: elimiate warining "format '%ld', but argument has type 'ssize_t'
Jeffrey Hutzelman
jhutz at cmu.edu
Tue Feb 2 00:56:23 CET 2010
--On Monday, February 01, 2010 04:17:56 PM -0500 Frank Cusack
<fcusack at fcusack.com> wrote:
>> I took a look... it's size_t. Which is 0-4K for any RADIUS packet.
>>
>> The "portable" fix is to change %ld to %d, and to add an explicit
>> cast: (int) packet->data_len.
>
> There is a size_t printf format specifier. %z I think. Barring that,
> since size_t is probably "at least" 32 bits and int is only guaranteed
> to be 16 bits, and also since size_t is unsigned, the more correct fix
> would be casting to unsigned long. But %z if that is correct is better.
Yes, it's 'z', but it's a size modifier, not a conversion. So '%zd' will
work to print a size_t value in decimal. If your printf conforms to C99,
which may not be a constraint FreeRadius wishes to adopt.
-- Jeff
More information about the Freeradius-Devel
mailing list