mirror of
git://sourceware.org/git/glibc.git
synced 2024-12-09 04:11:27 +08:00
935f3e6715
tm_gmtoff. * time/Makefile (tests): Add tst-strptime2. * time/tst-strptime2.c: New file.
60 lines
1.1 KiB
C
60 lines
1.1 KiB
C
#include <limits.h>
|
|
#include <stdio.h>
|
|
#include <time.h>
|
|
|
|
|
|
static const struct
|
|
{
|
|
const char *fmt;
|
|
long int gmtoff;
|
|
} tests[] =
|
|
{
|
|
{ "1113472456 +1000", 36000 },
|
|
{ "1113472456 -1000", -36000 },
|
|
{ "1113472456 +10", 36000 },
|
|
{ "1113472456 -10", -36000 },
|
|
{ "1113472456 +1030", 37800 },
|
|
{ "1113472456 -1030", -37800 },
|
|
{ "1113472456 +0030", 1800 },
|
|
{ "1113472456 -0030", -1800 },
|
|
{ "1113472456 -1330", LONG_MAX },
|
|
{ "1113472456 +1330", LONG_MAX },
|
|
{ "1113472456 -1060", LONG_MAX },
|
|
{ "1113472456 +1060", LONG_MAX },
|
|
{ "1113472456 1030", LONG_MAX },
|
|
};
|
|
#define ntests (sizeof (tests) / sizeof (tests[0]))
|
|
|
|
|
|
int
|
|
main (void)
|
|
{
|
|
int result = 0;
|
|
|
|
for (int i = 0; i < ntests; ++i)
|
|
{
|
|
struct tm tm;
|
|
|
|
if (strptime (tests[i].fmt, "%s %z", &tm) == NULL)
|
|
{
|
|
if (tests[i].gmtoff != LONG_MAX)
|
|
{
|
|
printf ("round %d: strptime unexpectedly failed\n", i);
|
|
result = 1;
|
|
}
|
|
continue;
|
|
}
|
|
|
|
if (tm.tm_gmtoff != tests[i].gmtoff)
|
|
{
|
|
printf ("round %d: tm_gmtoff is %ld\n", i, (long int) tm.tm_gmtoff);
|
|
result = 1;
|
|
}
|
|
}
|
|
|
|
if (result == 0)
|
|
puts ("all OK");
|
|
|
|
return 0;
|
|
}
|