/* this tests tries to call strftime() with a date > 2038 * to see if it works correctly. */ #include #include #include int main(void) { char buff[256]; time_t now = time(NULL); struct tm tm = *localtime(&now); tm.tm_year = 2039 - 1900; /* "%s" is the number of seconds since the epoch */ if (strftime(buff, sizeof buff, "%s", &tm) == 0) { fprintf(stderr, "strftime() returned 0\n"); exit(EXIT_FAILURE); } printf("seconds since epoch: %s\n", buff); /* a 32-bit limited implementation will return a negative number */ if (buff[0] == '-') { fprintf(stderr, "FAIL\n"); exit(EXIT_FAILURE); } /* "%c" is the usual date string for the current locale */ if (strftime(buff, sizeof buff, "%c", &tm) == 0) { fprintf(stderr, "strftime() returned 0\n"); exit(EXIT_FAILURE); } printf("date string : %s\n", buff); return 0; }