Newsgroups: comp.std.c Path: utzoo!utgpu!jarvis.csri.toronto.edu!dgp.toronto.edu!flaps From: flaps@dgp.toronto.edu (Alan J Rosenthal) Subject: Re: The type of time_t (was: struct tm -> time_t converter wanted) Message-ID: <8810231738.AA04205@explorer.dgp.toronto.edu> Organization: University of Toronto References: <442@grand.UUCP> <8700@smoke.BRL.MIL> <6964@cdis-1.uucp> <9816@haddock.ima.isc.com> <1988Oct22.230215.19411@utzoo.uucp> Date: Sun, 23 Oct 88 13:38:52 EDT karl@haddock.ima.isc.com (Karl Heuer) writes: >>There's nothing to prevent time_t from being typedef'd to unsigned long int, >>which would double the range... henry@utzoo.uucp (Henry Spencer) writes: >Unfortunately, it would probably break a significant number of programs that >think time_t is signed. Those programs are arguably broken already, but some >degree of pragmatism is necessary in such matters. Is it possible to assume that time_t is signed without assuming it's either int or long (or char)? I can't see how, and if it's not then Karl's change above wouldn't break any more programs than changing time_t between int and long would. (It is true that a cast to long sort of assumes that the value cast is signed, but in the case of time_t I don't see what you want to do with that value except cast it back to time_t, which makes the cast to long rather pointless. Or if you want to printf the number, well ansi printf's %lu format takes a long, not an unsigned long, anyway, so the cast to long is the correct way to print unsigned longs as well as longs.) ajr -- #define __STDC__ 0