On Tue, Feb 28, 2017 at 09:54:58PM +0100, Johannes Schindelin wrote: > > Right now, they may be able to have future timestamps ranging to > > year 2100 and switching to time_t would limit their ability to > > express future time to 2038 but they would be able to express > > timestamp in the past to cover most of 20th century. Given that > > these 32-bit time_t software platforms will die off before year 2038 > > (either by underlying hardware getting obsolete, or software updated > > to handle 64-bit time_t), the (temporary) loss of 2038-2100 range > > would not be too big a deal to warrant additional complexity. > > You seem to assume that time_t is required to be signed. But from my > understanding that is only guaranteed by POSIX, not by ISO C. I wonder how common that is in practice, and whether it is worth treating it as a quality-of-implementation issue. IOW, to say "your platform time_t doesn't handle negative times, so you get Jan 1 1970 for any dates before then. Complain to your platform vendor". I'm not sure how much complexity it would add to the code. Either way, when we parse an ascii-decimal timestamp from an object, we need to do bounds checking. Whether that bound is at "0" or "LONG_MIN", I don't think that it changes much. Meanwhile, if we were to have a negative timestamp_t but the system time_t is unsigned, we have to do a bounds-check any time we use a system function like gmtime(), or risk funny wrap-around bugs. -Peff