On Fri, 01 Jul 2011 14:57:01 +0900, Bron Gondwana <br...@fastmail.fm> wrote:
On Fri, Jul 01, 2011 at 10:46:05AM +0900, OBATA Akio wrote:
I want to clear following issue before NetBSD-6.0 release.
http://gnats.netbsd.org/44275
Then, workaround until 32-bits time_t overflow is "cast to `unsigned long'"
time_t data to pass snprintf with "%lu" format?
I can find it in imap/mailbox.c and imap/sync_client.c.
(other issues are not discovered for me at the moment).
I'm happy for you to do that.
brong@launde:/extra/src/git/cmu/cyrus-imapd$ ack time_t | wc -l
276
It looks like there's a maximum of 300 places that times are
defined.
Should we cast them to (unsigned long long) and then print them
with %llu? That way we're 64 bit safe in a few more places!
I feel that almost of them are using as time_t, and system library functions
only accept time_t type (and performance matter), so may of them should be kept
as is.
For printf format, how about to detect it in configure script?
if (sizeof(time_t) == sizeof(unsigned long long))
#define TIME_T_FMT "%llu"
else
#define TIME_T_FMT "%lu"
I saw some bare binary time_t data input/output, and it will wreak some
database incompatibility
at converting to different time_t size and/or endian platform, but it is
different issue.
--
OBATA Akio / ob...@lins.jp