1319ea244ab117bfa519ec4fb176e5b42a5710458The Android Open Source Project/* this tests tries to call strftime() with a date > 2038
2319ea244ab117bfa519ec4fb176e5b42a5710458The Android Open Source Project * to see if it works correctly.
3319ea244ab117bfa519ec4fb176e5b42a5710458The Android Open Source Project */
4319ea244ab117bfa519ec4fb176e5b42a5710458The Android Open Source Project#include <time.h>
5319ea244ab117bfa519ec4fb176e5b42a5710458The Android Open Source Project#include <stdio.h>
6319ea244ab117bfa519ec4fb176e5b42a5710458The Android Open Source Project#include <stdlib.h>
7319ea244ab117bfa519ec4fb176e5b42a5710458The Android Open Source Project
8319ea244ab117bfa519ec4fb176e5b42a5710458The Android Open Source Projectint  main(void)
9319ea244ab117bfa519ec4fb176e5b42a5710458The Android Open Source Project{
10319ea244ab117bfa519ec4fb176e5b42a5710458The Android Open Source Project    char        buff[256];
11319ea244ab117bfa519ec4fb176e5b42a5710458The Android Open Source Project    time_t      now = time(NULL);
12319ea244ab117bfa519ec4fb176e5b42a5710458The Android Open Source Project    struct tm   tm  = *localtime(&now);
13319ea244ab117bfa519ec4fb176e5b42a5710458The Android Open Source Project
14319ea244ab117bfa519ec4fb176e5b42a5710458The Android Open Source Project    tm.tm_year = 2039 - 1900;
15319ea244ab117bfa519ec4fb176e5b42a5710458The Android Open Source Project
16319ea244ab117bfa519ec4fb176e5b42a5710458The Android Open Source Project    /* "%s" is the number of seconds since the epoch */
17319ea244ab117bfa519ec4fb176e5b42a5710458The Android Open Source Project    if (strftime(buff, sizeof buff, "%s", &tm) == 0) {
18319ea244ab117bfa519ec4fb176e5b42a5710458The Android Open Source Project        fprintf(stderr, "strftime() returned 0\n");
19319ea244ab117bfa519ec4fb176e5b42a5710458The Android Open Source Project        exit(EXIT_FAILURE);
20319ea244ab117bfa519ec4fb176e5b42a5710458The Android Open Source Project    }
21319ea244ab117bfa519ec4fb176e5b42a5710458The Android Open Source Project    printf("seconds since epoch: %s\n", buff);
22319ea244ab117bfa519ec4fb176e5b42a5710458The Android Open Source Project
23319ea244ab117bfa519ec4fb176e5b42a5710458The Android Open Source Project    /* a 32-bit limited implementation will return a negative number */
24319ea244ab117bfa519ec4fb176e5b42a5710458The Android Open Source Project    if (buff[0] == '-') {
25319ea244ab117bfa519ec4fb176e5b42a5710458The Android Open Source Project        fprintf(stderr, "FAIL\n");
26319ea244ab117bfa519ec4fb176e5b42a5710458The Android Open Source Project        exit(EXIT_FAILURE);
27319ea244ab117bfa519ec4fb176e5b42a5710458The Android Open Source Project    }
28319ea244ab117bfa519ec4fb176e5b42a5710458The Android Open Source Project
29319ea244ab117bfa519ec4fb176e5b42a5710458The Android Open Source Project    /* "%c" is the usual date string for the current locale */
30319ea244ab117bfa519ec4fb176e5b42a5710458The Android Open Source Project    if (strftime(buff, sizeof buff, "%c", &tm) == 0) {
31319ea244ab117bfa519ec4fb176e5b42a5710458The Android Open Source Project        fprintf(stderr, "strftime() returned 0\n");
32319ea244ab117bfa519ec4fb176e5b42a5710458The Android Open Source Project        exit(EXIT_FAILURE);
33319ea244ab117bfa519ec4fb176e5b42a5710458The Android Open Source Project    }
34319ea244ab117bfa519ec4fb176e5b42a5710458The Android Open Source Project    printf("date string        : %s\n", buff);
35319ea244ab117bfa519ec4fb176e5b42a5710458The Android Open Source Project    return 0;
36319ea244ab117bfa519ec4fb176e5b42a5710458The Android Open Source Project}
37