[pacman-dev] [PATCH 2/2] More consistent printing of off_t and time_t

Xavier shiningxc at gmail.com
Mon Nov 16 05:30:31 EST 2009

On Mon, Nov 16, 2009 at 2:57 AM, Dan McGee <dpmcgee at gmail.com> wrote:
> On Sat, Nov 14, 2009 at 1:30 PM, Xavier Chantry <shiningxc at gmail.com> wrote:
>> %ld for type_t
> What is type_t?

lol, I remember I had a bug when I typed (hmm) that.
It was meant to be time_t

>> %"PRId64" for off_t
> Can you explain why this works for off_t?
> It looks like we have three "rogue" types here to be concerned with-
> time_t, size_t, and off_t. I'm not sure that removing all of the casts
> was the right decision, but hopefully I can be learned if you point me
> in the right direction.

I am not sure either.

I looked again at various references :
- man 3 printf
- man types.h
- man inttypes.h

What about the following :
time_t : %ld
size_t : %zu
ssize_t : %zd
off_t : %jd or %"PRIdMAX" and cast to intmax_t

For other long unsigned types (is there any?) : %ju or %"PRIuMAX" and
cast to uintmax_t

I checked netbsd, freebsd and osx man pages : they all document the z
and j length modifier

For cygwin, the man page I found inside this tarball does not document it :
But we are already using j and z in the current code and it did not
cause any problems.

So my final proposal :
time_t : %ld
size_t : %zu
ssize_t : %zd
off_t : %jd and cast to intmax_t
other long unsigned types : %ju and cast to uintmax_t

More information about the pacman-dev mailing list