Date: Sun, 3 Jun 2001 12:57:58 -0400 From: Garance A Drosihn <drosih@rpi.edu> To: Poul-Henning Kamp <phk@critter.freebsd.dk>, Peter Wemm <peter@wemm.org> Cc: John Polstra <jdp@polstra.com>, arch@FreeBSD.ORG Subject: Re: time_t definition is wrong Message-ID: <p05100e0fb74019e19da6@[128.113.24.47]> In-Reply-To: <45913.991557175@critter> References: <45913.991557175@critter>
next in thread | previous in thread | raw e-mail | index | archive | help
At 10:32 AM +0200 6/3/01, Poul-Henning Kamp wrote: >Most of the trouble here is printf. What we need is to be able >to say something like > > printf("time= %{time_t}\n", time_second); The following is what Garrett noted in this thread in -stable. I'm not sure where this leaves us, other than it shows that no matter what type we pick for type_t, there will still be some portability problems, at least when it comes to printing. It looks like the best way to solve the printing-issue is to always use strftime(). - Garance - - - - At 8:33 PM -0400 6/2/01, Garrett Wollman wrote: > The pw->pw_chage and pw->pw_passwd are of time_t. But, > in the above, %ld is used for them. This is a general problem; there is no portable way to print a time_t that does not include the following steps: 1) Determine whether time_t is integral, floating-point, or (new in C99) complex. 2) If time_t is integral, determine whether it is signed or unsigned. 3) If the compilation environment is not C99, and time_t is integral, cast to (appropriately signed) long and print with %ld or %lu as appropriate. If the compilation environment is (close enough to) C99, cast to (appropriately signed) intmax_t and print with %jd or %ju as appropriate. If time_t is floating-point, cast to long double and print with %Lf. If time_t is complex, you have a lot more serious problems to deal with. There is a simple way around this, for POSIX systems only: use strftime() with the %s format. -GAWollman - - - - To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-arch" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?p05100e0fb74019e19da6>