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