It seems that Red Hat's latest glibc has introduced a strict interpretation of the ISO C mktime() definition, such that dates before 1970 are now considered to be out of range. This has caused breakage of any application that relies on the old behaviour, such as PostgreSQL. It is also the case that neither Debian's nor Suse's glibc show this change; nor is it mentioned in their changelogs.. Do you know why this change has occurred only in Red Hat's version? Are the distributions' version numbers out of sync? A small program for testing is attached. On Debian's latest libc6 it reports a timestamp of -31712400, but on latest Red Hat it apparently reports -1. -- Oliver Elphick Oliver.Elphick@lfix.co.uk Isle of Wight http://www.lfix.co.uk/oliver GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839 932A 614D 4C34 3E1D 0C1C "And Jesus answering said unto them, They that are whole need not a physician; but they that are sick. I come not to call the righteous, but sinners to repentance." Luke 5:31,32
#include <stdio.h> #include <time.h> int main(int argc, char *argv[]) { int failout; struct tm fails; fails.tm_sec = 0; fails.tm_min = 0; fails.tm_hour = 0; fails.tm_hour = 0; fails.tm_isdst = -1; fails.tm_year = 68; fails.tm_mon = 11; fails.tm_mday = 30; failout = mktime(&fails); printf("The system thinks 11/30/1969 is a timestamp of %d \n", failout); return 0; }
Attachment:
signature.asc
Description: This is a digitally signed message part