Blame time/tst-mktime3.c

Packit Service 82fcde
/* Test program for mktime bugs with out-of-range tm_sec values.  */
Packit Service 82fcde
Packit Service 82fcde
#include <stdlib.h>
Packit Service 82fcde
#include <stdio.h>
Packit Service 82fcde
#include <time.h>
Packit Service 82fcde
Packit Service 82fcde
struct tm tests[] =
Packit Service 82fcde
{
Packit Service 82fcde
  { .tm_sec = -1, .tm_mday = 1, .tm_year = 104 },
Packit Service 82fcde
  { .tm_sec = 65, .tm_min = 59, .tm_hour = 23, .tm_mday = 31,
Packit Service 82fcde
    .tm_mon = 11, .tm_year = 101 }
Packit Service 82fcde
};
Packit Service 82fcde
struct tm expected[] =
Packit Service 82fcde
{
Packit Service 82fcde
  { .tm_sec = 59, .tm_min = 59, .tm_hour = 23, .tm_mday = 31,
Packit Service 82fcde
    .tm_mon = 11, .tm_year = 103, .tm_wday = 3, .tm_yday = 364 },
Packit Service 82fcde
  { .tm_sec = 5, .tm_mday = 1, .tm_year = 102, .tm_wday = 2 }
Packit Service 82fcde
};
Packit Service 82fcde
Packit Service 82fcde
static int
Packit Service 82fcde
do_test (void)
Packit Service 82fcde
{
Packit Service 82fcde
  setenv ("TZ", "UTC", 1);
Packit Service 82fcde
  int i;
Packit Service 82fcde
  for (i = 0; i < sizeof (tests) / sizeof (tests[0]); ++i)
Packit Service 82fcde
    {
Packit Service 82fcde
      if (mktime (&tests[i]) < 0)
Packit Service 82fcde
	{
Packit Service 82fcde
	  printf ("mktime %d failed\n", i);
Packit Service 82fcde
	  return 1;
Packit Service 82fcde
	}
Packit Service 82fcde
#define CHECK(name) \
Packit Service 82fcde
      if (tests[i].name != expected[i].name)			\
Packit Service 82fcde
	{							\
Packit Service 82fcde
	  printf ("test %d " #name " got %d expected %d\n",	\
Packit Service 82fcde
		  i, tests[i].name, expected[i].name);		\
Packit Service 82fcde
	  return 1;						\
Packit Service 82fcde
	}
Packit Service 82fcde
      CHECK (tm_sec)
Packit Service 82fcde
      CHECK (tm_min)
Packit Service 82fcde
      CHECK (tm_hour)
Packit Service 82fcde
      CHECK (tm_mday)
Packit Service 82fcde
      CHECK (tm_mon)
Packit Service 82fcde
      CHECK (tm_year)
Packit Service 82fcde
      CHECK (tm_wday)
Packit Service 82fcde
      CHECK (tm_yday)
Packit Service 82fcde
      CHECK (tm_isdst)
Packit Service 82fcde
    }
Packit Service 82fcde
  return 0;
Packit Service 82fcde
}
Packit Service 82fcde
Packit Service 82fcde
#define TEST_FUNCTION do_test ()
Packit Service 82fcde
#include "../test-skeleton.c"