(root)/
glibc-2.38/
time/
tst-mktime.c
       1  #include <stdlib.h>
       2  #include <stdio.h>
       3  #include <string.h>
       4  #include <time.h>
       5  
       6  static int
       7  do_test (void)
       8  {
       9    struct tm time_str, *tm;
      10    time_t t;
      11    char daybuf[20];
      12    int result;
      13  
      14    time_str.tm_year = 2001 - 1900;
      15    time_str.tm_mon = 7 - 1;
      16    time_str.tm_mday = 4;
      17    time_str.tm_hour = 0;
      18    time_str.tm_min = 0;
      19    time_str.tm_sec = 1;
      20    time_str.tm_isdst = -1;
      21  
      22    if (mktime (&time_str) == -1)
      23      {
      24        (void) puts ("-unknown-");
      25        result = 1;
      26      }
      27    else
      28      {
      29        (void) strftime (daybuf, sizeof (daybuf), "%A", &time_str);
      30        (void) puts (daybuf);
      31        result = strcmp (daybuf, "Wednesday") != 0;
      32      }
      33  
      34    setenv ("TZ", "EST+5", 1);
      35  #define EVENING69 1 * 60 * 60 + 2 * 60 + 29
      36    t = EVENING69;
      37    tm = localtime (&t);
      38    if (tm == NULL)
      39      {
      40        (void) puts ("localtime returned NULL");
      41        result = 1;
      42      }
      43    else
      44      {
      45        time_str = *tm;
      46        t = mktime (&time_str);
      47        if (t != EVENING69)
      48          {
      49            printf ("mktime returned %ld, expected %d\n",
      50  		  (long) t, EVENING69);
      51  	  result = 1;
      52          }
      53        else
      54          (void) puts ("Dec 31 1969 EST test passed");
      55  
      56        setenv ("TZ", "CET-1", 1);
      57        t = mktime (&time_str);
      58  #define EVENING69_CET (EVENING69 - (5 - -1) * 60 * 60)
      59        if (t != EVENING69_CET)
      60          {
      61  	  printf ("mktime returned %ld, expected %ld\n",
      62  		  (long) t, (long) EVENING69_CET);
      63  	  result = 1;
      64          }
      65        else
      66          (void) puts ("Dec 31 1969 CET test passed");
      67      }
      68  
      69    return result;
      70  }
      71  
      72  #define TEST_FUNCTION do_test ()
      73  #include "../test-skeleton.c"