/* this tests tries to call strftime() with a date > 2038
* to see if it works correctly.
*/
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
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;
}