diff options
author | Ulrich Drepper <drepper@redhat.com> | 2005-04-27 04:33:01 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2005-04-27 04:33:01 +0000 |
commit | 935f3e6715f2f178159eef1501ae30ad53a68150 (patch) | |
tree | f484c7c6c87c97774f3840c051804e42aa3588c0 /time/tst-strptime2.c | |
parent | bfc832ccf15e467b6271e8b237e467a30efd3d12 (diff) | |
download | glibc-935f3e6715f2f178159eef1501ae30ad53a68150.zip glibc-935f3e6715f2f178159eef1501ae30ad53a68150.tar.gz glibc-935f3e6715f2f178159eef1501ae30ad53a68150.tar.bz2 |
* time/strptime_l.c (__strptime_internal): Handle 'z' to set
tm_gmtoff.
* time/Makefile (tests): Add tst-strptime2.
* time/tst-strptime2.c: New file.
Diffstat (limited to 'time/tst-strptime2.c')
-rw-r--r-- | time/tst-strptime2.c | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/time/tst-strptime2.c b/time/tst-strptime2.c new file mode 100644 index 0000000..73552bb --- /dev/null +++ b/time/tst-strptime2.c @@ -0,0 +1,59 @@ +#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; +} |