1*1a002d0cSmbuhl /* $OpenBSD: timetest.c,v 1.4 2023/04/13 11:32:06 mbuhl Exp $ */
22dc6bcb0Sbeck
32dc6bcb0Sbeck /*
42dc6bcb0Sbeck * Copyright (c) 2022 Bob Beck <beck@openbsd.org>
52dc6bcb0Sbeck *
62dc6bcb0Sbeck * Permission to use, copy, modify, and distribute this software for any
72dc6bcb0Sbeck * purpose with or without fee is hereby granted, provided that the above
82dc6bcb0Sbeck * copyright notice and this permission notice appear in all copies.
92dc6bcb0Sbeck *
102dc6bcb0Sbeck * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
112dc6bcb0Sbeck * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
122dc6bcb0Sbeck * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
132dc6bcb0Sbeck * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
142dc6bcb0Sbeck * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
152dc6bcb0Sbeck * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
162dc6bcb0Sbeck * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
172dc6bcb0Sbeck */
182dc6bcb0Sbeck
192dc6bcb0Sbeck #include <sys/stat.h>
202dc6bcb0Sbeck #include <sys/stdint.h>
212dc6bcb0Sbeck #include <sys/types.h>
222dc6bcb0Sbeck
232dc6bcb0Sbeck #include <stdio.h>
242dc6bcb0Sbeck #include <stdlib.h>
252dc6bcb0Sbeck #include <string.h>
262dc6bcb0Sbeck #include <time.h>
272dc6bcb0Sbeck
282dc6bcb0Sbeck struct timetest {
292dc6bcb0Sbeck char *descr;
302dc6bcb0Sbeck char *timezone;
312dc6bcb0Sbeck time_t time;
322dc6bcb0Sbeck struct tm local_tm;
332dc6bcb0Sbeck struct tm gmt_tm;
342dc6bcb0Sbeck };
352dc6bcb0Sbeck
tm_match(struct tm * tm1,struct tm * tm2)362dc6bcb0Sbeck static int tm_match(struct tm * tm1, struct tm *tm2) {
372dc6bcb0Sbeck if (tm2->tm_year != tm1->tm_year ||
382dc6bcb0Sbeck tm2->tm_mon != tm1->tm_mon ||
392dc6bcb0Sbeck tm2->tm_mday != tm1->tm_mday ||
402dc6bcb0Sbeck tm2->tm_hour != tm1->tm_hour ||
412dc6bcb0Sbeck tm2->tm_min != tm1->tm_min ||
422dc6bcb0Sbeck tm2->tm_sec != tm1->tm_sec ||
432dc6bcb0Sbeck tm2->tm_wday != tm1->tm_wday ||
442dc6bcb0Sbeck tm2->tm_yday != tm1->tm_yday ||
452dc6bcb0Sbeck tm2->tm_yday != tm1->tm_yday ||
462dc6bcb0Sbeck tm2->tm_isdst != tm1->tm_isdst ||
472dc6bcb0Sbeck tm2->tm_gmtoff != tm1->tm_gmtoff ||
482dc6bcb0Sbeck strcmp(tm2->tm_zone, tm1->tm_zone) != 0)
492dc6bcb0Sbeck return 0;
502dc6bcb0Sbeck return 1;
512dc6bcb0Sbeck }
522dc6bcb0Sbeck
532dc6bcb0Sbeck struct timetest timetests[] = {
542dc6bcb0Sbeck {
552dc6bcb0Sbeck .descr="moon",
562dc6bcb0Sbeck .timezone="posix/America/Edmonton",
572dc6bcb0Sbeck .time=-16751025,
582dc6bcb0Sbeck .local_tm= {
592dc6bcb0Sbeck .tm_year=69,
602dc6bcb0Sbeck .tm_mon=5,
612dc6bcb0Sbeck .tm_mday=20,
622dc6bcb0Sbeck .tm_hour=19,
632dc6bcb0Sbeck .tm_min=56,
642dc6bcb0Sbeck .tm_sec=15,
652dc6bcb0Sbeck .tm_wday=5,
662dc6bcb0Sbeck .tm_yday=170,
672dc6bcb0Sbeck .tm_isdst=0,
682dc6bcb0Sbeck .tm_gmtoff=-25200,
692dc6bcb0Sbeck .tm_zone="MST"
702dc6bcb0Sbeck },
712dc6bcb0Sbeck .gmt_tm= {
722dc6bcb0Sbeck .tm_year=69,
732dc6bcb0Sbeck .tm_mon=5,
742dc6bcb0Sbeck .tm_mday=21,
752dc6bcb0Sbeck .tm_hour=2,
762dc6bcb0Sbeck .tm_min=56,
772dc6bcb0Sbeck .tm_sec=15,
782dc6bcb0Sbeck .tm_wday=6,
792dc6bcb0Sbeck .tm_yday=171,
802dc6bcb0Sbeck .tm_isdst=0,
812dc6bcb0Sbeck .tm_gmtoff=0,
822dc6bcb0Sbeck .tm_zone="GMT"
832dc6bcb0Sbeck },
842dc6bcb0Sbeck },
852dc6bcb0Sbeck {
862dc6bcb0Sbeck .descr="moon",
872dc6bcb0Sbeck .timezone="right/UTC",
882dc6bcb0Sbeck .time=-16751025,
892dc6bcb0Sbeck .local_tm= {
902dc6bcb0Sbeck .tm_year=69,
912dc6bcb0Sbeck .tm_mon=5,
922dc6bcb0Sbeck .tm_mday=21,
932dc6bcb0Sbeck .tm_hour=2,
942dc6bcb0Sbeck .tm_min=56,
952dc6bcb0Sbeck .tm_sec=15,
962dc6bcb0Sbeck .tm_wday=6,
972dc6bcb0Sbeck .tm_yday=171,
982dc6bcb0Sbeck .tm_isdst=0,
992dc6bcb0Sbeck .tm_gmtoff=0,
1002dc6bcb0Sbeck .tm_zone="UTC"
1012dc6bcb0Sbeck },
1022dc6bcb0Sbeck .gmt_tm= {
1032dc6bcb0Sbeck .tm_year=69,
1042dc6bcb0Sbeck .tm_mon=5,
1052dc6bcb0Sbeck .tm_mday=21,
1062dc6bcb0Sbeck .tm_hour=2,
1072dc6bcb0Sbeck .tm_min=56,
1082dc6bcb0Sbeck .tm_sec=15,
1092dc6bcb0Sbeck .tm_wday=6,
1102dc6bcb0Sbeck .tm_yday=171,
1112dc6bcb0Sbeck .tm_isdst=0,
1122dc6bcb0Sbeck .tm_gmtoff=0,
1132dc6bcb0Sbeck .tm_zone="GMT"
1142dc6bcb0Sbeck },
1152dc6bcb0Sbeck },
1162dc6bcb0Sbeck {
1172dc6bcb0Sbeck .descr="moon",
1182dc6bcb0Sbeck .timezone="right/America/Edmonton",
1192dc6bcb0Sbeck .time=-16751025,
1202dc6bcb0Sbeck .local_tm= {
1212dc6bcb0Sbeck .tm_year=69,
1222dc6bcb0Sbeck .tm_mon=5,
1232dc6bcb0Sbeck .tm_mday=20,
1242dc6bcb0Sbeck .tm_hour=19,
1252dc6bcb0Sbeck .tm_min=56,
1262dc6bcb0Sbeck .tm_sec=15,
1272dc6bcb0Sbeck .tm_wday=5,
1282dc6bcb0Sbeck .tm_yday=170,
1292dc6bcb0Sbeck .tm_isdst=0,
1302dc6bcb0Sbeck .tm_gmtoff=-25200,
1312dc6bcb0Sbeck .tm_zone="MST"
1322dc6bcb0Sbeck },
1332dc6bcb0Sbeck .gmt_tm= {
1342dc6bcb0Sbeck .tm_year=69,
1352dc6bcb0Sbeck .tm_mon=5,
1362dc6bcb0Sbeck .tm_mday=21,
1372dc6bcb0Sbeck .tm_hour=2,
1382dc6bcb0Sbeck .tm_min=56,
1392dc6bcb0Sbeck .tm_sec=15,
1402dc6bcb0Sbeck .tm_wday=6,
1412dc6bcb0Sbeck .tm_yday=171,
1422dc6bcb0Sbeck .tm_isdst=0,
1432dc6bcb0Sbeck .tm_gmtoff=0,
1442dc6bcb0Sbeck .tm_zone="GMT"
1452dc6bcb0Sbeck },
1462dc6bcb0Sbeck },
1472dc6bcb0Sbeck {
1482dc6bcb0Sbeck .descr="epoch",
1492dc6bcb0Sbeck .timezone="posix/America/Edmonton",
1502dc6bcb0Sbeck .time=0,
1512dc6bcb0Sbeck .local_tm= {
1522dc6bcb0Sbeck .tm_year=69,
1532dc6bcb0Sbeck .tm_mon=11,
1542dc6bcb0Sbeck .tm_mday=31,
1552dc6bcb0Sbeck .tm_hour=17,
1562dc6bcb0Sbeck .tm_min=0,
1572dc6bcb0Sbeck .tm_sec=0,
1582dc6bcb0Sbeck .tm_wday=3,
1592dc6bcb0Sbeck .tm_yday=364,
1602dc6bcb0Sbeck .tm_isdst=0,
1612dc6bcb0Sbeck .tm_gmtoff=-25200,
1622dc6bcb0Sbeck .tm_zone="MST"
1632dc6bcb0Sbeck },
1642dc6bcb0Sbeck .gmt_tm= {
1652dc6bcb0Sbeck .tm_year=70,
1662dc6bcb0Sbeck .tm_mon=0,
1672dc6bcb0Sbeck .tm_mday=1,
1682dc6bcb0Sbeck .tm_hour=0,
1692dc6bcb0Sbeck .tm_min=0,
1702dc6bcb0Sbeck .tm_sec=0,
1712dc6bcb0Sbeck .tm_wday=4,
1722dc6bcb0Sbeck .tm_yday=0,
1732dc6bcb0Sbeck .tm_isdst=0,
1742dc6bcb0Sbeck .tm_gmtoff=0,
1752dc6bcb0Sbeck .tm_zone="GMT"
1762dc6bcb0Sbeck },
1772dc6bcb0Sbeck },
1782dc6bcb0Sbeck {
1792dc6bcb0Sbeck .descr="epoch",
1802dc6bcb0Sbeck .timezone="right/UTC",
1812dc6bcb0Sbeck .time=0,
1822dc6bcb0Sbeck .local_tm= {
1832dc6bcb0Sbeck .tm_year=70,
1842dc6bcb0Sbeck .tm_mon=0,
1852dc6bcb0Sbeck .tm_mday=1,
1862dc6bcb0Sbeck .tm_hour=0,
1872dc6bcb0Sbeck .tm_min=0,
1882dc6bcb0Sbeck .tm_sec=0,
1892dc6bcb0Sbeck .tm_wday=4,
1902dc6bcb0Sbeck .tm_yday=0,
1912dc6bcb0Sbeck .tm_isdst=0,
1922dc6bcb0Sbeck .tm_gmtoff=0,
1932dc6bcb0Sbeck .tm_zone="UTC"
1942dc6bcb0Sbeck },
1952dc6bcb0Sbeck .gmt_tm= {
1962dc6bcb0Sbeck .tm_year=70,
1972dc6bcb0Sbeck .tm_mon=0,
1982dc6bcb0Sbeck .tm_mday=1,
1992dc6bcb0Sbeck .tm_hour=0,
2002dc6bcb0Sbeck .tm_min=0,
2012dc6bcb0Sbeck .tm_sec=0,
2022dc6bcb0Sbeck .tm_wday=4,
2032dc6bcb0Sbeck .tm_yday=0,
2042dc6bcb0Sbeck .tm_isdst=0,
2052dc6bcb0Sbeck .tm_gmtoff=0,
2062dc6bcb0Sbeck .tm_zone="GMT"
2072dc6bcb0Sbeck },
2082dc6bcb0Sbeck },
2092dc6bcb0Sbeck {
2102dc6bcb0Sbeck .descr="epoch",
2112dc6bcb0Sbeck .timezone="right/America/Edmonton",
2122dc6bcb0Sbeck .time=0,
2132dc6bcb0Sbeck .local_tm= {
2142dc6bcb0Sbeck .tm_year=69,
2152dc6bcb0Sbeck .tm_mon=11,
2162dc6bcb0Sbeck .tm_mday=31,
2172dc6bcb0Sbeck .tm_hour=17,
2182dc6bcb0Sbeck .tm_min=0,
2192dc6bcb0Sbeck .tm_sec=0,
2202dc6bcb0Sbeck .tm_wday=3,
2212dc6bcb0Sbeck .tm_yday=364,
2222dc6bcb0Sbeck .tm_isdst=0,
2232dc6bcb0Sbeck .tm_gmtoff=-25200,
2242dc6bcb0Sbeck .tm_zone="MST"
2252dc6bcb0Sbeck },
2262dc6bcb0Sbeck .gmt_tm= {
2272dc6bcb0Sbeck .tm_year=70,
2282dc6bcb0Sbeck .tm_mon=0,
2292dc6bcb0Sbeck .tm_mday=1,
2302dc6bcb0Sbeck .tm_hour=0,
2312dc6bcb0Sbeck .tm_min=0,
2322dc6bcb0Sbeck .tm_sec=0,
2332dc6bcb0Sbeck .tm_wday=4,
2342dc6bcb0Sbeck .tm_yday=0,
2352dc6bcb0Sbeck .tm_isdst=0,
2362dc6bcb0Sbeck .tm_gmtoff=0,
2372dc6bcb0Sbeck .tm_zone="GMT"
2382dc6bcb0Sbeck },
2392dc6bcb0Sbeck },
2402dc6bcb0Sbeck {
2412dc6bcb0Sbeck .descr="epoch - 1",
2422dc6bcb0Sbeck .timezone="posix/America/Edmonton",
2432dc6bcb0Sbeck .time=-1,
2442dc6bcb0Sbeck .local_tm= {
2452dc6bcb0Sbeck .tm_year=69,
2462dc6bcb0Sbeck .tm_mon=11,
2472dc6bcb0Sbeck .tm_mday=31,
2482dc6bcb0Sbeck .tm_hour=16,
2492dc6bcb0Sbeck .tm_min=59,
2502dc6bcb0Sbeck .tm_sec=59,
2512dc6bcb0Sbeck .tm_wday=3,
2522dc6bcb0Sbeck .tm_yday=364,
2532dc6bcb0Sbeck .tm_isdst=0,
2542dc6bcb0Sbeck .tm_gmtoff=-25200,
2552dc6bcb0Sbeck .tm_zone="MST"
2562dc6bcb0Sbeck },
2572dc6bcb0Sbeck .gmt_tm= {
2582dc6bcb0Sbeck .tm_year=69,
2592dc6bcb0Sbeck .tm_mon=11,
2602dc6bcb0Sbeck .tm_mday=31,
2612dc6bcb0Sbeck .tm_hour=23,
2622dc6bcb0Sbeck .tm_min=59,
2632dc6bcb0Sbeck .tm_sec=59,
2642dc6bcb0Sbeck .tm_wday=3,
2652dc6bcb0Sbeck .tm_yday=364,
2662dc6bcb0Sbeck .tm_isdst=0,
2672dc6bcb0Sbeck .tm_gmtoff=0,
2682dc6bcb0Sbeck .tm_zone="GMT"
2692dc6bcb0Sbeck },
2702dc6bcb0Sbeck },
2712dc6bcb0Sbeck {
2722dc6bcb0Sbeck .descr="epoch - 1",
2732dc6bcb0Sbeck .timezone="right/UTC",
2742dc6bcb0Sbeck .time=-1,
2752dc6bcb0Sbeck .local_tm= {
2762dc6bcb0Sbeck .tm_year=69,
2772dc6bcb0Sbeck .tm_mon=11,
2782dc6bcb0Sbeck .tm_mday=31,
2792dc6bcb0Sbeck .tm_hour=23,
2802dc6bcb0Sbeck .tm_min=59,
2812dc6bcb0Sbeck .tm_sec=59,
2822dc6bcb0Sbeck .tm_wday=3,
2832dc6bcb0Sbeck .tm_yday=364,
2842dc6bcb0Sbeck .tm_isdst=0,
2852dc6bcb0Sbeck .tm_gmtoff=0,
2862dc6bcb0Sbeck .tm_zone="UTC"
2872dc6bcb0Sbeck },
2882dc6bcb0Sbeck .gmt_tm= {
2892dc6bcb0Sbeck .tm_year=69,
2902dc6bcb0Sbeck .tm_mon=11,
2912dc6bcb0Sbeck .tm_mday=31,
2922dc6bcb0Sbeck .tm_hour=23,
2932dc6bcb0Sbeck .tm_min=59,
2942dc6bcb0Sbeck .tm_sec=59,
2952dc6bcb0Sbeck .tm_wday=3,
2962dc6bcb0Sbeck .tm_yday=364,
2972dc6bcb0Sbeck .tm_isdst=0,
2982dc6bcb0Sbeck .tm_gmtoff=0,
2992dc6bcb0Sbeck .tm_zone="GMT"
3002dc6bcb0Sbeck },
3012dc6bcb0Sbeck },
3022dc6bcb0Sbeck {
3032dc6bcb0Sbeck .descr="epoch - 1",
3042dc6bcb0Sbeck .timezone="right/America/Edmonton",
3052dc6bcb0Sbeck .time=-1,
3062dc6bcb0Sbeck .local_tm= {
3072dc6bcb0Sbeck .tm_year=69,
3082dc6bcb0Sbeck .tm_mon=11,
3092dc6bcb0Sbeck .tm_mday=31,
3102dc6bcb0Sbeck .tm_hour=16,
3112dc6bcb0Sbeck .tm_min=59,
3122dc6bcb0Sbeck .tm_sec=59,
3132dc6bcb0Sbeck .tm_wday=3,
3142dc6bcb0Sbeck .tm_yday=364,
3152dc6bcb0Sbeck .tm_isdst=0,
3162dc6bcb0Sbeck .tm_gmtoff=-25200,
3172dc6bcb0Sbeck .tm_zone="MST"
3182dc6bcb0Sbeck },
3192dc6bcb0Sbeck .gmt_tm= {
3202dc6bcb0Sbeck .tm_year=69,
3212dc6bcb0Sbeck .tm_mon=11,
3222dc6bcb0Sbeck .tm_mday=31,
3232dc6bcb0Sbeck .tm_hour=23,
3242dc6bcb0Sbeck .tm_min=59,
3252dc6bcb0Sbeck .tm_sec=59,
3262dc6bcb0Sbeck .tm_wday=3,
3272dc6bcb0Sbeck .tm_yday=364,
3282dc6bcb0Sbeck .tm_isdst=0,
3292dc6bcb0Sbeck .tm_gmtoff=0,
3302dc6bcb0Sbeck .tm_zone="GMT"
3312dc6bcb0Sbeck },
3322dc6bcb0Sbeck },
3332dc6bcb0Sbeck {
3342dc6bcb0Sbeck .descr="legacy min",
3352dc6bcb0Sbeck .timezone="posix/America/Edmonton",
3362dc6bcb0Sbeck .time=-2147483648,
3372dc6bcb0Sbeck .local_tm= {
3382dc6bcb0Sbeck .tm_year=1,
3392dc6bcb0Sbeck .tm_mon=11,
3402dc6bcb0Sbeck .tm_mday=13,
3412dc6bcb0Sbeck .tm_hour=13,
3422dc6bcb0Sbeck .tm_min=12,
3432dc6bcb0Sbeck .tm_sec=0,
3442dc6bcb0Sbeck .tm_wday=5,
3452dc6bcb0Sbeck .tm_yday=346,
3462dc6bcb0Sbeck .tm_isdst=0,
3472dc6bcb0Sbeck .tm_gmtoff=-27232,
3482dc6bcb0Sbeck .tm_zone="LMT"
3492dc6bcb0Sbeck },
3502dc6bcb0Sbeck .gmt_tm= {
3512dc6bcb0Sbeck .tm_year=1,
3522dc6bcb0Sbeck .tm_mon=11,
3532dc6bcb0Sbeck .tm_mday=13,
3542dc6bcb0Sbeck .tm_hour=20,
3552dc6bcb0Sbeck .tm_min=45,
3562dc6bcb0Sbeck .tm_sec=52,
3572dc6bcb0Sbeck .tm_wday=5,
3582dc6bcb0Sbeck .tm_yday=346,
3592dc6bcb0Sbeck .tm_isdst=0,
3602dc6bcb0Sbeck .tm_gmtoff=0,
3612dc6bcb0Sbeck .tm_zone="GMT"
3622dc6bcb0Sbeck },
3632dc6bcb0Sbeck },
3642dc6bcb0Sbeck {
3652dc6bcb0Sbeck .descr="legacy min",
3662dc6bcb0Sbeck .timezone="right/UTC",
3672dc6bcb0Sbeck .time=-2147483648,
3682dc6bcb0Sbeck .local_tm= {
3692dc6bcb0Sbeck .tm_year=1,
3702dc6bcb0Sbeck .tm_mon=11,
3712dc6bcb0Sbeck .tm_mday=13,
3722dc6bcb0Sbeck .tm_hour=20,
3732dc6bcb0Sbeck .tm_min=45,
3742dc6bcb0Sbeck .tm_sec=52,
3752dc6bcb0Sbeck .tm_wday=5,
3762dc6bcb0Sbeck .tm_yday=346,
3772dc6bcb0Sbeck .tm_isdst=0,
3782dc6bcb0Sbeck .tm_gmtoff=0,
3792dc6bcb0Sbeck .tm_zone="UTC"
3802dc6bcb0Sbeck },
3812dc6bcb0Sbeck .gmt_tm= {
3822dc6bcb0Sbeck .tm_year=1,
3832dc6bcb0Sbeck .tm_mon=11,
3842dc6bcb0Sbeck .tm_mday=13,
3852dc6bcb0Sbeck .tm_hour=20,
3862dc6bcb0Sbeck .tm_min=45,
3872dc6bcb0Sbeck .tm_sec=52,
3882dc6bcb0Sbeck .tm_wday=5,
3892dc6bcb0Sbeck .tm_yday=346,
3902dc6bcb0Sbeck .tm_isdst=0,
3912dc6bcb0Sbeck .tm_gmtoff=0,
3922dc6bcb0Sbeck .tm_zone="GMT"
3932dc6bcb0Sbeck },
3942dc6bcb0Sbeck },
3952dc6bcb0Sbeck {
3962dc6bcb0Sbeck .descr="legacy min - 1",
3972dc6bcb0Sbeck .timezone="posix/America/Edmonton",
3982dc6bcb0Sbeck .time=-2147483649,
3992dc6bcb0Sbeck .local_tm= {
4002dc6bcb0Sbeck .tm_year=1,
4012dc6bcb0Sbeck .tm_mon=11,
4022dc6bcb0Sbeck .tm_mday=13,
4032dc6bcb0Sbeck .tm_hour=13,
4042dc6bcb0Sbeck .tm_min=11,
4052dc6bcb0Sbeck .tm_sec=59,
4062dc6bcb0Sbeck .tm_wday=5,
4072dc6bcb0Sbeck .tm_yday=346,
4082dc6bcb0Sbeck .tm_isdst=0,
4092dc6bcb0Sbeck .tm_gmtoff=-27232,
4102dc6bcb0Sbeck .tm_zone="LMT"
4112dc6bcb0Sbeck },
4122dc6bcb0Sbeck .gmt_tm= {
4132dc6bcb0Sbeck .tm_year=1,
4142dc6bcb0Sbeck .tm_mon=11,
4152dc6bcb0Sbeck .tm_mday=13,
4162dc6bcb0Sbeck .tm_hour=20,
4172dc6bcb0Sbeck .tm_min=45,
4182dc6bcb0Sbeck .tm_sec=51,
4192dc6bcb0Sbeck .tm_wday=5,
4202dc6bcb0Sbeck .tm_yday=346,
4212dc6bcb0Sbeck .tm_isdst=0,
4222dc6bcb0Sbeck .tm_gmtoff=0,
4232dc6bcb0Sbeck .tm_zone="GMT"
4242dc6bcb0Sbeck },
4252dc6bcb0Sbeck },
4262dc6bcb0Sbeck {
4272dc6bcb0Sbeck .descr="legacy min - 1",
4282dc6bcb0Sbeck .timezone="right/UTC",
4292dc6bcb0Sbeck .time=-2147483649,
4302dc6bcb0Sbeck .local_tm= {
4312dc6bcb0Sbeck .tm_year=1,
4322dc6bcb0Sbeck .tm_mon=11,
4332dc6bcb0Sbeck .tm_mday=13,
4342dc6bcb0Sbeck .tm_hour=20,
4352dc6bcb0Sbeck .tm_min=45,
4362dc6bcb0Sbeck .tm_sec=51,
4372dc6bcb0Sbeck .tm_wday=5,
4382dc6bcb0Sbeck .tm_yday=346,
4392dc6bcb0Sbeck .tm_isdst=0,
4402dc6bcb0Sbeck .tm_gmtoff=0,
4412dc6bcb0Sbeck .tm_zone="UTC"
4422dc6bcb0Sbeck },
4432dc6bcb0Sbeck .gmt_tm= {
4442dc6bcb0Sbeck .tm_year=1,
4452dc6bcb0Sbeck .tm_mon=11,
4462dc6bcb0Sbeck .tm_mday=13,
4472dc6bcb0Sbeck .tm_hour=20,
4482dc6bcb0Sbeck .tm_min=45,
4492dc6bcb0Sbeck .tm_sec=51,
4502dc6bcb0Sbeck .tm_wday=5,
4512dc6bcb0Sbeck .tm_yday=346,
4522dc6bcb0Sbeck .tm_isdst=0,
4532dc6bcb0Sbeck .tm_gmtoff=0,
4542dc6bcb0Sbeck .tm_zone="GMT"
4552dc6bcb0Sbeck },
4562dc6bcb0Sbeck },
4572dc6bcb0Sbeck {
4582dc6bcb0Sbeck .descr="legacy max",
4592dc6bcb0Sbeck .timezone="posix/America/Edmonton",
4602dc6bcb0Sbeck .time=2147483647,
4612dc6bcb0Sbeck .local_tm= {
4622dc6bcb0Sbeck .tm_year=138,
4632dc6bcb0Sbeck .tm_mon=0,
4642dc6bcb0Sbeck .tm_mday=18,
4652dc6bcb0Sbeck .tm_hour=20,
4662dc6bcb0Sbeck .tm_min=14,
4672dc6bcb0Sbeck .tm_sec=7,
4682dc6bcb0Sbeck .tm_wday=1,
4692dc6bcb0Sbeck .tm_yday=17,
4702dc6bcb0Sbeck .tm_isdst=0,
4712dc6bcb0Sbeck .tm_gmtoff=-25200,
4722dc6bcb0Sbeck .tm_zone="MST"
4732dc6bcb0Sbeck },
4742dc6bcb0Sbeck .gmt_tm= {
4752dc6bcb0Sbeck .tm_year=138,
4762dc6bcb0Sbeck .tm_mon=0,
4772dc6bcb0Sbeck .tm_mday=19,
4782dc6bcb0Sbeck .tm_hour=3,
4792dc6bcb0Sbeck .tm_min=14,
4802dc6bcb0Sbeck .tm_sec=7,
4812dc6bcb0Sbeck .tm_wday=2,
4822dc6bcb0Sbeck .tm_yday=18,
4832dc6bcb0Sbeck .tm_isdst=0,
4842dc6bcb0Sbeck .tm_gmtoff=0,
4852dc6bcb0Sbeck .tm_zone="GMT"
4862dc6bcb0Sbeck },
4872dc6bcb0Sbeck },
4882dc6bcb0Sbeck {
4892dc6bcb0Sbeck .descr="legacy max",
4902dc6bcb0Sbeck .timezone="right/UTC",
4912dc6bcb0Sbeck .time=2147483647,
4922dc6bcb0Sbeck .local_tm= {
4932dc6bcb0Sbeck .tm_year=138,
4942dc6bcb0Sbeck .tm_mon=0,
4952dc6bcb0Sbeck .tm_mday=19,
4962dc6bcb0Sbeck .tm_hour=3,
4972dc6bcb0Sbeck .tm_min=13,
4982dc6bcb0Sbeck .tm_sec=40,
4992dc6bcb0Sbeck .tm_wday=2,
5002dc6bcb0Sbeck .tm_yday=18,
5012dc6bcb0Sbeck .tm_isdst=0,
5022dc6bcb0Sbeck .tm_gmtoff=0,
5032dc6bcb0Sbeck .tm_zone="UTC"
5042dc6bcb0Sbeck },
5052dc6bcb0Sbeck .gmt_tm= {
5062dc6bcb0Sbeck .tm_year=138,
5072dc6bcb0Sbeck .tm_mon=0,
5082dc6bcb0Sbeck .tm_mday=19,
5092dc6bcb0Sbeck .tm_hour=3,
5102dc6bcb0Sbeck .tm_min=14,
5112dc6bcb0Sbeck .tm_sec=7,
5122dc6bcb0Sbeck .tm_wday=2,
5132dc6bcb0Sbeck .tm_yday=18,
5142dc6bcb0Sbeck .tm_isdst=0,
5152dc6bcb0Sbeck .tm_gmtoff=0,
5162dc6bcb0Sbeck .tm_zone="GMT"
5172dc6bcb0Sbeck },
5182dc6bcb0Sbeck },
5192dc6bcb0Sbeck {
5202dc6bcb0Sbeck .descr="legacy max + 1",
5212dc6bcb0Sbeck .timezone="posix/America/Edmonton",
5222dc6bcb0Sbeck .time=2147483648,
5232dc6bcb0Sbeck .local_tm= {
5242dc6bcb0Sbeck .tm_year=138,
5252dc6bcb0Sbeck .tm_mon=0,
5262dc6bcb0Sbeck .tm_mday=18,
5272dc6bcb0Sbeck .tm_hour=20,
5282dc6bcb0Sbeck .tm_min=14,
5292dc6bcb0Sbeck .tm_sec=8,
5302dc6bcb0Sbeck .tm_wday=1,
5312dc6bcb0Sbeck .tm_yday=17,
5322dc6bcb0Sbeck .tm_isdst=0,
5332dc6bcb0Sbeck .tm_gmtoff=-25200,
5342dc6bcb0Sbeck .tm_zone="MST"
5352dc6bcb0Sbeck },
5362dc6bcb0Sbeck .gmt_tm= {
5372dc6bcb0Sbeck .tm_year=138,
5382dc6bcb0Sbeck .tm_mon=0,
5392dc6bcb0Sbeck .tm_mday=19,
5402dc6bcb0Sbeck .tm_hour=3,
5412dc6bcb0Sbeck .tm_min=14,
5422dc6bcb0Sbeck .tm_sec=8,
5432dc6bcb0Sbeck .tm_wday=2,
5442dc6bcb0Sbeck .tm_yday=18,
5452dc6bcb0Sbeck .tm_isdst=0,
5462dc6bcb0Sbeck .tm_gmtoff=0,
5472dc6bcb0Sbeck .tm_zone="GMT"
5482dc6bcb0Sbeck },
5492dc6bcb0Sbeck },
5502dc6bcb0Sbeck {
5512dc6bcb0Sbeck .descr="legacy max + 1",
5522dc6bcb0Sbeck .timezone="right/UTC",
5532dc6bcb0Sbeck .time=2147483648,
5542dc6bcb0Sbeck .local_tm= {
5552dc6bcb0Sbeck .tm_year=138,
5562dc6bcb0Sbeck .tm_mon=0,
5572dc6bcb0Sbeck .tm_mday=19,
5582dc6bcb0Sbeck .tm_hour=3,
5592dc6bcb0Sbeck .tm_min=13,
5602dc6bcb0Sbeck .tm_sec=41,
5612dc6bcb0Sbeck .tm_wday=2,
5622dc6bcb0Sbeck .tm_yday=18,
5632dc6bcb0Sbeck .tm_isdst=0,
5642dc6bcb0Sbeck .tm_gmtoff=0,
5652dc6bcb0Sbeck .tm_zone="UTC"
5662dc6bcb0Sbeck },
5672dc6bcb0Sbeck .gmt_tm= {
5682dc6bcb0Sbeck .tm_year=138,
5692dc6bcb0Sbeck .tm_mon=0,
5702dc6bcb0Sbeck .tm_mday=19,
5712dc6bcb0Sbeck .tm_hour=3,
5722dc6bcb0Sbeck .tm_min=14,
5732dc6bcb0Sbeck .tm_sec=8,
5742dc6bcb0Sbeck .tm_wday=2,
5752dc6bcb0Sbeck .tm_yday=18,
5762dc6bcb0Sbeck .tm_isdst=0,
5772dc6bcb0Sbeck .tm_gmtoff=0,
5782dc6bcb0Sbeck .tm_zone="GMT"
5792dc6bcb0Sbeck },
5802dc6bcb0Sbeck },
5812dc6bcb0Sbeck {
5822dc6bcb0Sbeck .descr="min",
5832dc6bcb0Sbeck .timezone="posix/America/Edmonton",
5842dc6bcb0Sbeck .time=INT64_MIN,
5852dc6bcb0Sbeck .local_tm= {
5862dc6bcb0Sbeck .tm_year=0,
5872dc6bcb0Sbeck .tm_mon=0,
5882dc6bcb0Sbeck .tm_mday=0,
5892dc6bcb0Sbeck .tm_hour=0,
5902dc6bcb0Sbeck .tm_min=0,
5912dc6bcb0Sbeck .tm_sec=0,
5922dc6bcb0Sbeck .tm_wday=0,
5932dc6bcb0Sbeck .tm_yday=0,
5942dc6bcb0Sbeck .tm_isdst=0,
5952dc6bcb0Sbeck .tm_gmtoff=0,
5962dc6bcb0Sbeck .tm_zone="FAILURE"
5972dc6bcb0Sbeck },
5982dc6bcb0Sbeck .gmt_tm= {
5992dc6bcb0Sbeck .tm_year=0,
6002dc6bcb0Sbeck .tm_mon=0,
6012dc6bcb0Sbeck .tm_mday=0,
6022dc6bcb0Sbeck .tm_hour=0,
6032dc6bcb0Sbeck .tm_min=0,
6042dc6bcb0Sbeck .tm_sec=0,
6052dc6bcb0Sbeck .tm_wday=0,
6062dc6bcb0Sbeck .tm_yday=0,
6072dc6bcb0Sbeck .tm_isdst=0,
6082dc6bcb0Sbeck .tm_gmtoff=0,
6092dc6bcb0Sbeck .tm_zone="FAILURE"
6102dc6bcb0Sbeck },
6112dc6bcb0Sbeck },
6122dc6bcb0Sbeck {
6132dc6bcb0Sbeck .descr="min",
6142dc6bcb0Sbeck .timezone="right/UTC",
6152dc6bcb0Sbeck .time=INT64_MIN,
6162dc6bcb0Sbeck .local_tm= {
6172dc6bcb0Sbeck .tm_year=0,
6182dc6bcb0Sbeck .tm_mon=0,
6192dc6bcb0Sbeck .tm_mday=0,
6202dc6bcb0Sbeck .tm_hour=0,
6212dc6bcb0Sbeck .tm_min=0,
6222dc6bcb0Sbeck .tm_sec=0,
6232dc6bcb0Sbeck .tm_wday=0,
6242dc6bcb0Sbeck .tm_yday=0,
6252dc6bcb0Sbeck .tm_isdst=0,
6262dc6bcb0Sbeck .tm_gmtoff=0,
6272dc6bcb0Sbeck .tm_zone="FAILURE"
6282dc6bcb0Sbeck },
6292dc6bcb0Sbeck .gmt_tm= {
6302dc6bcb0Sbeck .tm_year=0,
6312dc6bcb0Sbeck .tm_mon=0,
6322dc6bcb0Sbeck .tm_mday=0,
6332dc6bcb0Sbeck .tm_hour=0,
6342dc6bcb0Sbeck .tm_min=0,
6352dc6bcb0Sbeck .tm_sec=0,
6362dc6bcb0Sbeck .tm_wday=0,
6372dc6bcb0Sbeck .tm_yday=0,
6382dc6bcb0Sbeck .tm_isdst=0,
6392dc6bcb0Sbeck .tm_gmtoff=0,
6402dc6bcb0Sbeck .tm_zone="FAILURE"
6412dc6bcb0Sbeck },
6422dc6bcb0Sbeck },
6432dc6bcb0Sbeck {
6442dc6bcb0Sbeck .descr="max",
6452dc6bcb0Sbeck .timezone="right/America/Edmonton",
6462dc6bcb0Sbeck .time=9223372036854775807,
6472dc6bcb0Sbeck .local_tm= {
6482dc6bcb0Sbeck .tm_year=0,
6492dc6bcb0Sbeck .tm_mon=0,
6502dc6bcb0Sbeck .tm_mday=0,
6512dc6bcb0Sbeck .tm_hour=0,
6522dc6bcb0Sbeck .tm_min=0,
6532dc6bcb0Sbeck .tm_sec=0,
6542dc6bcb0Sbeck .tm_wday=0,
6552dc6bcb0Sbeck .tm_yday=0,
6562dc6bcb0Sbeck .tm_isdst=0,
6572dc6bcb0Sbeck .tm_gmtoff=0,
6582dc6bcb0Sbeck .tm_zone="FAILURE"
6592dc6bcb0Sbeck },
6602dc6bcb0Sbeck .gmt_tm= {
6612dc6bcb0Sbeck .tm_year=0,
6622dc6bcb0Sbeck .tm_mon=0,
6632dc6bcb0Sbeck .tm_mday=0,
6642dc6bcb0Sbeck .tm_hour=0,
6652dc6bcb0Sbeck .tm_min=0,
6662dc6bcb0Sbeck .tm_sec=0,
6672dc6bcb0Sbeck .tm_wday=0,
6682dc6bcb0Sbeck .tm_yday=0,
6692dc6bcb0Sbeck .tm_isdst=0,
6702dc6bcb0Sbeck .tm_gmtoff=0,
6712dc6bcb0Sbeck .tm_zone="FAILURE"
6722dc6bcb0Sbeck },
6732dc6bcb0Sbeck },
6742dc6bcb0Sbeck {
6752dc6bcb0Sbeck .descr="max",
6762dc6bcb0Sbeck .timezone="posix/America/Edmonton",
6772dc6bcb0Sbeck .time=9223372036854775807,
6782dc6bcb0Sbeck .local_tm= {
6792dc6bcb0Sbeck .tm_year=0,
6802dc6bcb0Sbeck .tm_mon=0,
6812dc6bcb0Sbeck .tm_mday=0,
6822dc6bcb0Sbeck .tm_hour=0,
6832dc6bcb0Sbeck .tm_min=0,
6842dc6bcb0Sbeck .tm_sec=0,
6852dc6bcb0Sbeck .tm_wday=0,
6862dc6bcb0Sbeck .tm_yday=0,
6872dc6bcb0Sbeck .tm_isdst=0,
6882dc6bcb0Sbeck .tm_gmtoff=0,
6892dc6bcb0Sbeck .tm_zone="FAILURE"
6902dc6bcb0Sbeck },
6912dc6bcb0Sbeck .gmt_tm= {
6922dc6bcb0Sbeck .tm_year=0,
6932dc6bcb0Sbeck .tm_mon=0,
6942dc6bcb0Sbeck .tm_mday=0,
6952dc6bcb0Sbeck .tm_hour=0,
6962dc6bcb0Sbeck .tm_min=0,
6972dc6bcb0Sbeck .tm_sec=0,
6982dc6bcb0Sbeck .tm_wday=0,
6992dc6bcb0Sbeck .tm_yday=0,
7002dc6bcb0Sbeck .tm_isdst=0,
7012dc6bcb0Sbeck .tm_gmtoff=0,
7022dc6bcb0Sbeck .tm_zone="FAILURE"
7032dc6bcb0Sbeck },
7042dc6bcb0Sbeck },
7052dc6bcb0Sbeck {
7062dc6bcb0Sbeck .descr="max",
7072dc6bcb0Sbeck .timezone="right/UTC",
7082dc6bcb0Sbeck .time=9223372036854775807,
7092dc6bcb0Sbeck .local_tm= {
7102dc6bcb0Sbeck .tm_year=0,
7112dc6bcb0Sbeck .tm_mon=0,
7122dc6bcb0Sbeck .tm_mday=0,
7132dc6bcb0Sbeck .tm_hour=0,
7142dc6bcb0Sbeck .tm_min=0,
7152dc6bcb0Sbeck .tm_sec=0,
7162dc6bcb0Sbeck .tm_wday=0,
7172dc6bcb0Sbeck .tm_yday=0,
7182dc6bcb0Sbeck .tm_isdst=0,
7192dc6bcb0Sbeck .tm_gmtoff=0,
7202dc6bcb0Sbeck .tm_zone="FAILURE"
7212dc6bcb0Sbeck },
7222dc6bcb0Sbeck .gmt_tm= {
7232dc6bcb0Sbeck .tm_year=0,
7242dc6bcb0Sbeck .tm_mon=0,
7252dc6bcb0Sbeck .tm_mday=0,
7262dc6bcb0Sbeck .tm_hour=0,
7272dc6bcb0Sbeck .tm_min=0,
7282dc6bcb0Sbeck .tm_sec=0,
7292dc6bcb0Sbeck .tm_wday=0,
7302dc6bcb0Sbeck .tm_yday=0,
7312dc6bcb0Sbeck .tm_isdst=0,
7322dc6bcb0Sbeck .tm_gmtoff=0,
7332dc6bcb0Sbeck .tm_zone="FAILURE"
7342dc6bcb0Sbeck },
7352dc6bcb0Sbeck },
7362dc6bcb0Sbeck {
7372dc6bcb0Sbeck .descr="min",
7382dc6bcb0Sbeck .timezone="right/America/Edmonton",
7392dc6bcb0Sbeck .time=INT64_MIN,
7402dc6bcb0Sbeck .local_tm= {
7412dc6bcb0Sbeck .tm_year=0,
7422dc6bcb0Sbeck .tm_mon=0,
7432dc6bcb0Sbeck .tm_mday=0,
7442dc6bcb0Sbeck .tm_hour=0,
7452dc6bcb0Sbeck .tm_min=0,
7462dc6bcb0Sbeck .tm_sec=0,
7472dc6bcb0Sbeck .tm_wday=0,
7482dc6bcb0Sbeck .tm_yday=0,
7492dc6bcb0Sbeck .tm_isdst=0,
7502dc6bcb0Sbeck .tm_gmtoff=0,
7512dc6bcb0Sbeck .tm_zone="FAILURE"
7522dc6bcb0Sbeck },
7532dc6bcb0Sbeck .gmt_tm= {
7542dc6bcb0Sbeck .tm_year=0,
7552dc6bcb0Sbeck .tm_mon=0,
7562dc6bcb0Sbeck .tm_mday=0,
7572dc6bcb0Sbeck .tm_hour=0,
7582dc6bcb0Sbeck .tm_min=0,
7592dc6bcb0Sbeck .tm_sec=0,
7602dc6bcb0Sbeck .tm_wday=0,
7612dc6bcb0Sbeck .tm_yday=0,
7622dc6bcb0Sbeck .tm_isdst=0,
7632dc6bcb0Sbeck .tm_gmtoff=0,
7642dc6bcb0Sbeck .tm_zone="FAILURE"
7652dc6bcb0Sbeck },
7662dc6bcb0Sbeck },
7672dc6bcb0Sbeck {
768201ca770Sbeck .descr="maxint struct tm",
769201ca770Sbeck .timezone="right/America/Edmonton",
770201ca770Sbeck .time=67767976204675199,
771201ca770Sbeck .local_tm= {
772201ca770Sbeck .tm_year=2147481747,
773201ca770Sbeck .tm_mon=0,
774201ca770Sbeck .tm_mday=31,
775201ca770Sbeck .tm_hour=16,
776201ca770Sbeck .tm_min=59,
777201ca770Sbeck .tm_sec=32,
778201ca770Sbeck .tm_wday=4,
779201ca770Sbeck .tm_yday=30,
780201ca770Sbeck .tm_isdst=0,
781201ca770Sbeck .tm_gmtoff=-25200,
782201ca770Sbeck .tm_zone="MST"
783201ca770Sbeck },
784201ca770Sbeck .gmt_tm= {
785201ca770Sbeck .tm_year=2147481747,
786201ca770Sbeck .tm_mon=0,
787201ca770Sbeck .tm_mday=31,
788201ca770Sbeck .tm_hour=23,
789201ca770Sbeck .tm_min=59,
790201ca770Sbeck .tm_sec=59,
791201ca770Sbeck .tm_wday=4,
792201ca770Sbeck .tm_yday=30,
793201ca770Sbeck .tm_isdst=0,
794201ca770Sbeck .tm_gmtoff=0,
795201ca770Sbeck .tm_zone="GMT"
796201ca770Sbeck },
797201ca770Sbeck },
798201ca770Sbeck {
799201ca770Sbeck .descr="minint struct tm",
800201ca770Sbeck .timezone="right/America/Edmonton",
801201ca770Sbeck .time=-67768038398073601,
802201ca770Sbeck .local_tm= {
803201ca770Sbeck .tm_year=-2147483578,
804201ca770Sbeck .tm_mon=0,
805201ca770Sbeck .tm_mday=31,
806201ca770Sbeck .tm_hour=16,
807201ca770Sbeck .tm_min=26,
808201ca770Sbeck .tm_sec=7,
809201ca770Sbeck .tm_wday=2,
810201ca770Sbeck .tm_yday=30,
811201ca770Sbeck .tm_isdst=0,
812201ca770Sbeck .tm_gmtoff=-27232,
813201ca770Sbeck .tm_zone="LMT"
814201ca770Sbeck },
815201ca770Sbeck .gmt_tm= {
816201ca770Sbeck .tm_year=-2147483578,
817201ca770Sbeck .tm_mon=0,
818201ca770Sbeck .tm_mday=31,
819201ca770Sbeck .tm_hour=23,
820201ca770Sbeck .tm_min=59,
821201ca770Sbeck .tm_sec=59,
822201ca770Sbeck .tm_wday=2,
823201ca770Sbeck .tm_yday=30,
824201ca770Sbeck .tm_isdst=0,
825201ca770Sbeck .tm_gmtoff=0,
826201ca770Sbeck .tm_zone="GMT"
827201ca770Sbeck },
828201ca770Sbeck },
829201ca770Sbeck {
830201ca770Sbeck .descr="maxint struct tm",
831201ca770Sbeck .timezone="right/UTC",
832201ca770Sbeck .time=67767976204675199,
833201ca770Sbeck .local_tm= {
834201ca770Sbeck .tm_year=2147481747,
835201ca770Sbeck .tm_mon=0,
836201ca770Sbeck .tm_mday=31,
837201ca770Sbeck .tm_hour=23,
838201ca770Sbeck .tm_min=59,
839201ca770Sbeck .tm_sec=32,
840201ca770Sbeck .tm_wday=4,
841201ca770Sbeck .tm_yday=30,
842201ca770Sbeck .tm_isdst=0,
843201ca770Sbeck .tm_gmtoff=0,
844201ca770Sbeck .tm_zone="UTC"
845201ca770Sbeck },
846201ca770Sbeck .gmt_tm= {
847201ca770Sbeck .tm_year=2147481747,
848201ca770Sbeck .tm_mon=0,
849201ca770Sbeck .tm_mday=31,
850201ca770Sbeck .tm_hour=23,
851201ca770Sbeck .tm_min=59,
852201ca770Sbeck .tm_sec=59,
853201ca770Sbeck .tm_wday=4,
854201ca770Sbeck .tm_yday=30,
855201ca770Sbeck .tm_isdst=0,
856201ca770Sbeck .tm_gmtoff=0,
857201ca770Sbeck .tm_zone="GMT"
858201ca770Sbeck },
859201ca770Sbeck },
860201ca770Sbeck {
861201ca770Sbeck .descr="minint struct tm",
862201ca770Sbeck .timezone="right/UTC",
863201ca770Sbeck .time=-67768038398073601,
864201ca770Sbeck .local_tm= {
865201ca770Sbeck .tm_year=-2147483578,
866201ca770Sbeck .tm_mon=0,
867201ca770Sbeck .tm_mday=31,
868201ca770Sbeck .tm_hour=23,
869201ca770Sbeck .tm_min=59,
870201ca770Sbeck .tm_sec=59,
871201ca770Sbeck .tm_wday=2,
872201ca770Sbeck .tm_yday=30,
873201ca770Sbeck .tm_isdst=0,
874201ca770Sbeck .tm_gmtoff=0,
875201ca770Sbeck .tm_zone="UTC"
876201ca770Sbeck },
877201ca770Sbeck .gmt_tm= {
878201ca770Sbeck .tm_year=-2147483578,
879201ca770Sbeck .tm_mon=0,
880201ca770Sbeck .tm_mday=31,
881201ca770Sbeck .tm_hour=23,
882201ca770Sbeck .tm_min=59,
883201ca770Sbeck .tm_sec=59,
884201ca770Sbeck .tm_wday=2,
885201ca770Sbeck .tm_yday=30,
886201ca770Sbeck .tm_isdst=0,
887201ca770Sbeck .tm_gmtoff=0,
888201ca770Sbeck .tm_zone="GMT"
889201ca770Sbeck },
890201ca770Sbeck },
891201ca770Sbeck {
8922dc6bcb0Sbeck .descr="0000",
8932dc6bcb0Sbeck .timezone="posix/America/Edmonton",
8942dc6bcb0Sbeck .time=-62167219200,
8952dc6bcb0Sbeck .local_tm= {
8962dc6bcb0Sbeck .tm_year=-1901,
8972dc6bcb0Sbeck .tm_mon=11,
8982dc6bcb0Sbeck .tm_mday=31,
8992dc6bcb0Sbeck .tm_hour=16,
9002dc6bcb0Sbeck .tm_min=26,
9012dc6bcb0Sbeck .tm_sec=8,
9022dc6bcb0Sbeck .tm_wday=5,
9032dc6bcb0Sbeck .tm_yday=364,
9042dc6bcb0Sbeck .tm_isdst=0,
9052dc6bcb0Sbeck .tm_gmtoff=-27232,
9062dc6bcb0Sbeck .tm_zone="LMT"
9072dc6bcb0Sbeck },
9082dc6bcb0Sbeck .gmt_tm= {
9092dc6bcb0Sbeck .tm_year=-1900,
9102dc6bcb0Sbeck .tm_mon=0,
9112dc6bcb0Sbeck .tm_mday=1,
9122dc6bcb0Sbeck .tm_hour=0,
9132dc6bcb0Sbeck .tm_min=0,
9142dc6bcb0Sbeck .tm_sec=0,
9152dc6bcb0Sbeck .tm_wday=6,
9162dc6bcb0Sbeck .tm_yday=0,
9172dc6bcb0Sbeck .tm_isdst=0,
9182dc6bcb0Sbeck .tm_gmtoff=0,
9192dc6bcb0Sbeck .tm_zone="GMT"
9202dc6bcb0Sbeck },
9212dc6bcb0Sbeck },
9222dc6bcb0Sbeck {
9232dc6bcb0Sbeck .descr="0000",
9242dc6bcb0Sbeck .timezone="right/UTC",
9252dc6bcb0Sbeck .time=-62167219200,
9262dc6bcb0Sbeck .local_tm= {
9272dc6bcb0Sbeck .tm_year=-1900,
9282dc6bcb0Sbeck .tm_mon=0,
9292dc6bcb0Sbeck .tm_mday=1,
9302dc6bcb0Sbeck .tm_hour=0,
9312dc6bcb0Sbeck .tm_min=0,
9322dc6bcb0Sbeck .tm_sec=0,
9332dc6bcb0Sbeck .tm_wday=6,
9342dc6bcb0Sbeck .tm_yday=0,
9352dc6bcb0Sbeck .tm_isdst=0,
9362dc6bcb0Sbeck .tm_gmtoff=0,
9372dc6bcb0Sbeck .tm_zone="UTC"
9382dc6bcb0Sbeck },
9392dc6bcb0Sbeck .gmt_tm= {
9402dc6bcb0Sbeck .tm_year=-1900,
9412dc6bcb0Sbeck .tm_mon=0,
9422dc6bcb0Sbeck .tm_mday=1,
9432dc6bcb0Sbeck .tm_hour=0,
9442dc6bcb0Sbeck .tm_min=0,
9452dc6bcb0Sbeck .tm_sec=0,
9462dc6bcb0Sbeck .tm_wday=6,
9472dc6bcb0Sbeck .tm_yday=0,
9482dc6bcb0Sbeck .tm_isdst=0,
9492dc6bcb0Sbeck .tm_gmtoff=0,
9502dc6bcb0Sbeck .tm_zone="GMT"
9512dc6bcb0Sbeck },
9522dc6bcb0Sbeck },
9532dc6bcb0Sbeck {
9542dc6bcb0Sbeck .descr="0000",
9552dc6bcb0Sbeck .timezone="right/America/Edmonton",
9562dc6bcb0Sbeck .time=-62167219200,
9572dc6bcb0Sbeck .local_tm= {
9582dc6bcb0Sbeck .tm_year=-1901,
9592dc6bcb0Sbeck .tm_mon=11,
9602dc6bcb0Sbeck .tm_mday=31,
9612dc6bcb0Sbeck .tm_hour=16,
9622dc6bcb0Sbeck .tm_min=26,
9632dc6bcb0Sbeck .tm_sec=8,
9642dc6bcb0Sbeck .tm_wday=5,
9652dc6bcb0Sbeck .tm_yday=364,
9662dc6bcb0Sbeck .tm_isdst=0,
9672dc6bcb0Sbeck .tm_gmtoff=-27232,
9682dc6bcb0Sbeck .tm_zone="LMT"
9692dc6bcb0Sbeck },
9702dc6bcb0Sbeck .gmt_tm= {
9712dc6bcb0Sbeck .tm_year=-1900,
9722dc6bcb0Sbeck .tm_mon=0,
9732dc6bcb0Sbeck .tm_mday=1,
9742dc6bcb0Sbeck .tm_hour=0,
9752dc6bcb0Sbeck .tm_min=0,
9762dc6bcb0Sbeck .tm_sec=0,
9772dc6bcb0Sbeck .tm_wday=6,
9782dc6bcb0Sbeck .tm_yday=0,
9792dc6bcb0Sbeck .tm_isdst=0,
9802dc6bcb0Sbeck .tm_gmtoff=0,
9812dc6bcb0Sbeck .tm_zone="GMT"
9822dc6bcb0Sbeck },
9832dc6bcb0Sbeck },
9842dc6bcb0Sbeck {
9852dc6bcb0Sbeck .descr="9999",
9862dc6bcb0Sbeck .timezone="posix/America/Edmonton",
9872dc6bcb0Sbeck .time=253402300799,
9882dc6bcb0Sbeck .local_tm= {
9892dc6bcb0Sbeck .tm_year=8099,
9902dc6bcb0Sbeck .tm_mon=11,
9912dc6bcb0Sbeck .tm_mday=31,
9922dc6bcb0Sbeck .tm_hour=16,
9932dc6bcb0Sbeck .tm_min=59,
9942dc6bcb0Sbeck .tm_sec=59,
9952dc6bcb0Sbeck .tm_wday=5,
9962dc6bcb0Sbeck .tm_yday=364,
9972dc6bcb0Sbeck .tm_isdst=0,
9982dc6bcb0Sbeck .tm_gmtoff=-25200,
9992dc6bcb0Sbeck .tm_zone="MST"
10002dc6bcb0Sbeck },
10012dc6bcb0Sbeck .gmt_tm= {
10022dc6bcb0Sbeck .tm_year=8099,
10032dc6bcb0Sbeck .tm_mon=11,
10042dc6bcb0Sbeck .tm_mday=31,
10052dc6bcb0Sbeck .tm_hour=23,
10062dc6bcb0Sbeck .tm_min=59,
10072dc6bcb0Sbeck .tm_sec=59,
10082dc6bcb0Sbeck .tm_wday=5,
10092dc6bcb0Sbeck .tm_yday=364,
10102dc6bcb0Sbeck .tm_isdst=0,
10112dc6bcb0Sbeck .tm_gmtoff=0,
10122dc6bcb0Sbeck .tm_zone="GMT"
10132dc6bcb0Sbeck },
10142dc6bcb0Sbeck },
10152dc6bcb0Sbeck {
10162dc6bcb0Sbeck .descr="9999",
10172dc6bcb0Sbeck .timezone="right/UTC",
10182dc6bcb0Sbeck .time=253402300799,
10192dc6bcb0Sbeck .local_tm= {
10202dc6bcb0Sbeck .tm_year=8099,
10212dc6bcb0Sbeck .tm_mon=11,
10222dc6bcb0Sbeck .tm_mday=31,
10232dc6bcb0Sbeck .tm_hour=23,
10242dc6bcb0Sbeck .tm_min=59,
10252dc6bcb0Sbeck .tm_sec=32,
10262dc6bcb0Sbeck .tm_wday=5,
10272dc6bcb0Sbeck .tm_yday=364,
10282dc6bcb0Sbeck .tm_isdst=0,
10292dc6bcb0Sbeck .tm_gmtoff=0,
10302dc6bcb0Sbeck .tm_zone="UTC"
10312dc6bcb0Sbeck },
10322dc6bcb0Sbeck .gmt_tm= {
10332dc6bcb0Sbeck .tm_year=8099,
10342dc6bcb0Sbeck .tm_mon=11,
10352dc6bcb0Sbeck .tm_mday=31,
10362dc6bcb0Sbeck .tm_hour=23,
10372dc6bcb0Sbeck .tm_min=59,
10382dc6bcb0Sbeck .tm_sec=59,
10392dc6bcb0Sbeck .tm_wday=5,
10402dc6bcb0Sbeck .tm_yday=364,
10412dc6bcb0Sbeck .tm_isdst=0,
10422dc6bcb0Sbeck .tm_gmtoff=0,
10432dc6bcb0Sbeck .tm_zone="GMT"
10442dc6bcb0Sbeck },
10452dc6bcb0Sbeck },
10462dc6bcb0Sbeck {
10472dc6bcb0Sbeck .descr="9999",
10482dc6bcb0Sbeck .timezone="right/America/Edmonton",
10492dc6bcb0Sbeck .time=253402300799,
10502dc6bcb0Sbeck .local_tm= {
10512dc6bcb0Sbeck .tm_year=8099,
10522dc6bcb0Sbeck .tm_mon=11,
10532dc6bcb0Sbeck .tm_mday=31,
10542dc6bcb0Sbeck .tm_hour=16,
10552dc6bcb0Sbeck .tm_min=59,
10562dc6bcb0Sbeck .tm_sec=32,
10572dc6bcb0Sbeck .tm_wday=5,
10582dc6bcb0Sbeck .tm_yday=364,
10592dc6bcb0Sbeck .tm_isdst=0,
10602dc6bcb0Sbeck .tm_gmtoff=-25200,
10612dc6bcb0Sbeck .tm_zone="MST"
10622dc6bcb0Sbeck },
10632dc6bcb0Sbeck .gmt_tm= {
10642dc6bcb0Sbeck .tm_year=8099,
10652dc6bcb0Sbeck .tm_mon=11,
10662dc6bcb0Sbeck .tm_mday=31,
10672dc6bcb0Sbeck .tm_hour=23,
10682dc6bcb0Sbeck .tm_min=59,
10692dc6bcb0Sbeck .tm_sec=59,
10702dc6bcb0Sbeck .tm_wday=5,
10712dc6bcb0Sbeck .tm_yday=364,
10722dc6bcb0Sbeck .tm_isdst=0,
10732dc6bcb0Sbeck .tm_gmtoff=0,
10742dc6bcb0Sbeck .tm_zone="GMT"
10752dc6bcb0Sbeck },
10762dc6bcb0Sbeck },
10772dc6bcb0Sbeck {
10782dc6bcb0Sbeck .descr="leap second - 1",
10792dc6bcb0Sbeck .timezone="posix/America/Edmonton",
10802dc6bcb0Sbeck .time=1483228825,
10812dc6bcb0Sbeck .local_tm= {
10822dc6bcb0Sbeck .tm_year=116,
10832dc6bcb0Sbeck .tm_mon=11,
10842dc6bcb0Sbeck .tm_mday=31,
10852dc6bcb0Sbeck .tm_hour=17,
10862dc6bcb0Sbeck .tm_min=0,
10872dc6bcb0Sbeck .tm_sec=25,
10882dc6bcb0Sbeck .tm_wday=6,
10892dc6bcb0Sbeck .tm_yday=365,
10902dc6bcb0Sbeck .tm_isdst=0,
10912dc6bcb0Sbeck .tm_gmtoff=-25200,
10922dc6bcb0Sbeck .tm_zone="MST"
10932dc6bcb0Sbeck },
10942dc6bcb0Sbeck .gmt_tm= {
10952dc6bcb0Sbeck .tm_year=117,
10962dc6bcb0Sbeck .tm_mon=0,
10972dc6bcb0Sbeck .tm_mday=1,
10982dc6bcb0Sbeck .tm_hour=0,
10992dc6bcb0Sbeck .tm_min=0,
11002dc6bcb0Sbeck .tm_sec=25,
11012dc6bcb0Sbeck .tm_wday=0,
11022dc6bcb0Sbeck .tm_yday=0,
11032dc6bcb0Sbeck .tm_isdst=0,
11042dc6bcb0Sbeck .tm_gmtoff=0,
11052dc6bcb0Sbeck .tm_zone="GMT"
11062dc6bcb0Sbeck },
11072dc6bcb0Sbeck },
11082dc6bcb0Sbeck {
11092dc6bcb0Sbeck .descr="leap second",
11102dc6bcb0Sbeck .timezone="posix/America/Edmonton",
11112dc6bcb0Sbeck .time=1483228826,
11122dc6bcb0Sbeck .local_tm= {
11132dc6bcb0Sbeck .tm_year=116,
11142dc6bcb0Sbeck .tm_mon=11,
11152dc6bcb0Sbeck .tm_mday=31,
11162dc6bcb0Sbeck .tm_hour=17,
11172dc6bcb0Sbeck .tm_min=0,
11182dc6bcb0Sbeck .tm_sec=26,
11192dc6bcb0Sbeck .tm_wday=6,
11202dc6bcb0Sbeck .tm_yday=365,
11212dc6bcb0Sbeck .tm_isdst=0,
11222dc6bcb0Sbeck .tm_gmtoff=-25200,
11232dc6bcb0Sbeck .tm_zone="MST"
11242dc6bcb0Sbeck },
11252dc6bcb0Sbeck .gmt_tm= {
11262dc6bcb0Sbeck .tm_year=117,
11272dc6bcb0Sbeck .tm_mon=0,
11282dc6bcb0Sbeck .tm_mday=1,
11292dc6bcb0Sbeck .tm_hour=0,
11302dc6bcb0Sbeck .tm_min=0,
11312dc6bcb0Sbeck .tm_sec=26,
11322dc6bcb0Sbeck .tm_wday=0,
11332dc6bcb0Sbeck .tm_yday=0,
11342dc6bcb0Sbeck .tm_isdst=0,
11352dc6bcb0Sbeck .tm_gmtoff=0,
11362dc6bcb0Sbeck .tm_zone="GMT"
11372dc6bcb0Sbeck },
11382dc6bcb0Sbeck },
11392dc6bcb0Sbeck {
11402dc6bcb0Sbeck .descr="leap second + 1",
11412dc6bcb0Sbeck .timezone="posix/America/Edmonton",
11422dc6bcb0Sbeck .time=1483228827,
11432dc6bcb0Sbeck .local_tm= {
11442dc6bcb0Sbeck .tm_year=116,
11452dc6bcb0Sbeck .tm_mon=11,
11462dc6bcb0Sbeck .tm_mday=31,
11472dc6bcb0Sbeck .tm_hour=17,
11482dc6bcb0Sbeck .tm_min=0,
11492dc6bcb0Sbeck .tm_sec=27,
11502dc6bcb0Sbeck .tm_wday=6,
11512dc6bcb0Sbeck .tm_yday=365,
11522dc6bcb0Sbeck .tm_isdst=0,
11532dc6bcb0Sbeck .tm_gmtoff=-25200,
11542dc6bcb0Sbeck .tm_zone="MST"
11552dc6bcb0Sbeck },
11562dc6bcb0Sbeck .gmt_tm= {
11572dc6bcb0Sbeck .tm_year=117,
11582dc6bcb0Sbeck .tm_mon=0,
11592dc6bcb0Sbeck .tm_mday=1,
11602dc6bcb0Sbeck .tm_hour=0,
11612dc6bcb0Sbeck .tm_min=0,
11622dc6bcb0Sbeck .tm_sec=27,
11632dc6bcb0Sbeck .tm_wday=0,
11642dc6bcb0Sbeck .tm_yday=0,
11652dc6bcb0Sbeck .tm_isdst=0,
11662dc6bcb0Sbeck .tm_gmtoff=0,
11672dc6bcb0Sbeck .tm_zone="GMT"
11682dc6bcb0Sbeck },
11692dc6bcb0Sbeck },
11702dc6bcb0Sbeck {
11712dc6bcb0Sbeck .descr="leap second - 1",
11722dc6bcb0Sbeck .timezone="right/UTC",
11732dc6bcb0Sbeck .time=1483228825,
11742dc6bcb0Sbeck .local_tm= {
11752dc6bcb0Sbeck .tm_year=116,
11762dc6bcb0Sbeck .tm_mon=11,
11772dc6bcb0Sbeck .tm_mday=31,
11782dc6bcb0Sbeck .tm_hour=23,
11792dc6bcb0Sbeck .tm_min=59,
11802dc6bcb0Sbeck .tm_sec=59,
11812dc6bcb0Sbeck .tm_wday=6,
11822dc6bcb0Sbeck .tm_yday=365,
11832dc6bcb0Sbeck .tm_isdst=0,
11842dc6bcb0Sbeck .tm_gmtoff=0,
11852dc6bcb0Sbeck .tm_zone="UTC"
11862dc6bcb0Sbeck },
11872dc6bcb0Sbeck .gmt_tm= {
11882dc6bcb0Sbeck .tm_year=117,
11892dc6bcb0Sbeck .tm_mon=0,
11902dc6bcb0Sbeck .tm_mday=1,
11912dc6bcb0Sbeck .tm_hour=0,
11922dc6bcb0Sbeck .tm_min=0,
11932dc6bcb0Sbeck .tm_sec=25,
11942dc6bcb0Sbeck .tm_wday=0,
11952dc6bcb0Sbeck .tm_yday=0,
11962dc6bcb0Sbeck .tm_isdst=0,
11972dc6bcb0Sbeck .tm_gmtoff=0,
11982dc6bcb0Sbeck .tm_zone="GMT"
11992dc6bcb0Sbeck },
12002dc6bcb0Sbeck },
12012dc6bcb0Sbeck {
12022dc6bcb0Sbeck .descr="leap second",
12032dc6bcb0Sbeck .timezone="right/UTC",
12042dc6bcb0Sbeck .time=1483228826,
12052dc6bcb0Sbeck .local_tm= {
12062dc6bcb0Sbeck .tm_year=116,
12072dc6bcb0Sbeck .tm_mon=11,
12082dc6bcb0Sbeck .tm_mday=31,
12092dc6bcb0Sbeck .tm_hour=23,
12102dc6bcb0Sbeck .tm_min=59,
12112dc6bcb0Sbeck .tm_sec=60,
12122dc6bcb0Sbeck .tm_wday=6,
12132dc6bcb0Sbeck .tm_yday=365,
12142dc6bcb0Sbeck .tm_isdst=0,
12152dc6bcb0Sbeck .tm_gmtoff=0,
12162dc6bcb0Sbeck .tm_zone="UTC"
12172dc6bcb0Sbeck },
12182dc6bcb0Sbeck .gmt_tm= {
12192dc6bcb0Sbeck .tm_year=117,
12202dc6bcb0Sbeck .tm_mon=0,
12212dc6bcb0Sbeck .tm_mday=1,
12222dc6bcb0Sbeck .tm_hour=0,
12232dc6bcb0Sbeck .tm_min=0,
12242dc6bcb0Sbeck .tm_sec=26,
12252dc6bcb0Sbeck .tm_wday=0,
12262dc6bcb0Sbeck .tm_yday=0,
12272dc6bcb0Sbeck .tm_isdst=0,
12282dc6bcb0Sbeck .tm_gmtoff=0,
12292dc6bcb0Sbeck .tm_zone="GMT"
12302dc6bcb0Sbeck },
12312dc6bcb0Sbeck },
12322dc6bcb0Sbeck {
12332dc6bcb0Sbeck .descr="leap second + 1",
12342dc6bcb0Sbeck .timezone="right/UTC",
12352dc6bcb0Sbeck .time=1483228827,
12362dc6bcb0Sbeck .local_tm= {
12372dc6bcb0Sbeck .tm_year=117,
12382dc6bcb0Sbeck .tm_mon=0,
12392dc6bcb0Sbeck .tm_mday=1,
12402dc6bcb0Sbeck .tm_hour=0,
12412dc6bcb0Sbeck .tm_min=0,
12422dc6bcb0Sbeck .tm_sec=0,
12432dc6bcb0Sbeck .tm_wday=0,
12442dc6bcb0Sbeck .tm_yday=0,
12452dc6bcb0Sbeck .tm_isdst=0,
12462dc6bcb0Sbeck .tm_gmtoff=0,
12472dc6bcb0Sbeck .tm_zone="UTC"
12482dc6bcb0Sbeck },
12492dc6bcb0Sbeck .gmt_tm= {
12502dc6bcb0Sbeck .tm_year=117,
12512dc6bcb0Sbeck .tm_mon=0,
12522dc6bcb0Sbeck .tm_mday=1,
12532dc6bcb0Sbeck .tm_hour=0,
12542dc6bcb0Sbeck .tm_min=0,
12552dc6bcb0Sbeck .tm_sec=27,
12562dc6bcb0Sbeck .tm_wday=0,
12572dc6bcb0Sbeck .tm_yday=0,
12582dc6bcb0Sbeck .tm_isdst=0,
12592dc6bcb0Sbeck .tm_gmtoff=0,
12602dc6bcb0Sbeck .tm_zone="GMT"
12612dc6bcb0Sbeck },
12622dc6bcb0Sbeck },
12632dc6bcb0Sbeck {
12642dc6bcb0Sbeck .descr="leap second - 1",
12652dc6bcb0Sbeck .timezone="right/America/Edmonton",
12662dc6bcb0Sbeck .time=1483228825,
12672dc6bcb0Sbeck .local_tm= {
12682dc6bcb0Sbeck .tm_year=116,
12692dc6bcb0Sbeck .tm_mon=11,
12702dc6bcb0Sbeck .tm_mday=31,
12712dc6bcb0Sbeck .tm_hour=16,
12722dc6bcb0Sbeck .tm_min=59,
12732dc6bcb0Sbeck .tm_sec=59,
12742dc6bcb0Sbeck .tm_wday=6,
12752dc6bcb0Sbeck .tm_yday=365,
12762dc6bcb0Sbeck .tm_isdst=0,
12772dc6bcb0Sbeck .tm_gmtoff=-25200,
12782dc6bcb0Sbeck .tm_zone="MST"
12792dc6bcb0Sbeck },
12802dc6bcb0Sbeck .gmt_tm= {
12812dc6bcb0Sbeck .tm_year=117,
12822dc6bcb0Sbeck .tm_mon=0,
12832dc6bcb0Sbeck .tm_mday=1,
12842dc6bcb0Sbeck .tm_hour=0,
12852dc6bcb0Sbeck .tm_min=0,
12862dc6bcb0Sbeck .tm_sec=25,
12872dc6bcb0Sbeck .tm_wday=0,
12882dc6bcb0Sbeck .tm_yday=0,
12892dc6bcb0Sbeck .tm_isdst=0,
12902dc6bcb0Sbeck .tm_gmtoff=0,
12912dc6bcb0Sbeck .tm_zone="GMT"
12922dc6bcb0Sbeck },
12932dc6bcb0Sbeck },
12942dc6bcb0Sbeck {
12952dc6bcb0Sbeck .descr="leap second",
12962dc6bcb0Sbeck .timezone="right/America/Edmonton",
12972dc6bcb0Sbeck .time=1483228826,
12982dc6bcb0Sbeck .local_tm= {
12992dc6bcb0Sbeck .tm_year=116,
13002dc6bcb0Sbeck .tm_mon=11,
13012dc6bcb0Sbeck .tm_mday=31,
13022dc6bcb0Sbeck .tm_hour=16,
13032dc6bcb0Sbeck .tm_min=59,
13042dc6bcb0Sbeck .tm_sec=60,
13052dc6bcb0Sbeck .tm_wday=6,
13062dc6bcb0Sbeck .tm_yday=365,
13072dc6bcb0Sbeck .tm_isdst=0,
13082dc6bcb0Sbeck .tm_gmtoff=-25200,
13092dc6bcb0Sbeck .tm_zone="MST"
13102dc6bcb0Sbeck },
13112dc6bcb0Sbeck .gmt_tm= {
13122dc6bcb0Sbeck .tm_year=117,
13132dc6bcb0Sbeck .tm_mon=0,
13142dc6bcb0Sbeck .tm_mday=1,
13152dc6bcb0Sbeck .tm_hour=0,
13162dc6bcb0Sbeck .tm_min=0,
13172dc6bcb0Sbeck .tm_sec=26,
13182dc6bcb0Sbeck .tm_wday=0,
13192dc6bcb0Sbeck .tm_yday=0,
13202dc6bcb0Sbeck .tm_isdst=0,
13212dc6bcb0Sbeck .tm_gmtoff=0,
13222dc6bcb0Sbeck .tm_zone="GMT"
13232dc6bcb0Sbeck },
13242dc6bcb0Sbeck },
13252dc6bcb0Sbeck {
13262dc6bcb0Sbeck .descr="leap second + 1",
13272dc6bcb0Sbeck .timezone="right/America/Edmonton",
13282dc6bcb0Sbeck .time=1483228827,
13292dc6bcb0Sbeck .local_tm= {
13302dc6bcb0Sbeck .tm_year=116,
13312dc6bcb0Sbeck .tm_mon=11,
13322dc6bcb0Sbeck .tm_mday=31,
13332dc6bcb0Sbeck .tm_hour=17,
13342dc6bcb0Sbeck .tm_min=0,
13352dc6bcb0Sbeck .tm_sec=0,
13362dc6bcb0Sbeck .tm_wday=6,
13372dc6bcb0Sbeck .tm_yday=365,
13382dc6bcb0Sbeck .tm_isdst=0,
13392dc6bcb0Sbeck .tm_gmtoff=-25200,
13402dc6bcb0Sbeck .tm_zone="MST"
13412dc6bcb0Sbeck },
13422dc6bcb0Sbeck .gmt_tm= {
13432dc6bcb0Sbeck .tm_year=117,
13442dc6bcb0Sbeck .tm_mon=0,
13452dc6bcb0Sbeck .tm_mday=1,
13462dc6bcb0Sbeck .tm_hour=0,
13472dc6bcb0Sbeck .tm_min=0,
13482dc6bcb0Sbeck .tm_sec=27,
13492dc6bcb0Sbeck .tm_wday=0,
13502dc6bcb0Sbeck .tm_yday=0,
13512dc6bcb0Sbeck .tm_isdst=0,
13522dc6bcb0Sbeck .tm_gmtoff=0,
13532dc6bcb0Sbeck .tm_zone="GMT"
13542dc6bcb0Sbeck },
13552dc6bcb0Sbeck },
13562dc6bcb0Sbeck {
13572dc6bcb0Sbeck .descr="transition standard to daylight - 1",
13582dc6bcb0Sbeck .timezone="posix/America/Edmonton",
13592dc6bcb0Sbeck .time=1457859599,
13602dc6bcb0Sbeck .local_tm= {
13612dc6bcb0Sbeck .tm_year=116,
13622dc6bcb0Sbeck .tm_mon=2,
13632dc6bcb0Sbeck .tm_mday=13,
13642dc6bcb0Sbeck .tm_hour=1,
13652dc6bcb0Sbeck .tm_min=59,
13662dc6bcb0Sbeck .tm_sec=59,
13672dc6bcb0Sbeck .tm_wday=0,
13682dc6bcb0Sbeck .tm_yday=72,
13692dc6bcb0Sbeck .tm_isdst=0,
13702dc6bcb0Sbeck .tm_gmtoff=-25200,
13712dc6bcb0Sbeck .tm_zone="MST"
13722dc6bcb0Sbeck },
13732dc6bcb0Sbeck .gmt_tm= {
13742dc6bcb0Sbeck .tm_year=116,
13752dc6bcb0Sbeck .tm_mon=2,
13762dc6bcb0Sbeck .tm_mday=13,
13772dc6bcb0Sbeck .tm_hour=8,
13782dc6bcb0Sbeck .tm_min=59,
13792dc6bcb0Sbeck .tm_sec=59,
13802dc6bcb0Sbeck .tm_wday=0,
13812dc6bcb0Sbeck .tm_yday=72,
13822dc6bcb0Sbeck .tm_isdst=0,
13832dc6bcb0Sbeck .tm_gmtoff=0,
13842dc6bcb0Sbeck .tm_zone="GMT"
13852dc6bcb0Sbeck },
13862dc6bcb0Sbeck },
13872dc6bcb0Sbeck {
13882dc6bcb0Sbeck .descr="transition standard to daylight",
13892dc6bcb0Sbeck .timezone="posix/America/Edmonton",
13902dc6bcb0Sbeck .time=1457859600,
13912dc6bcb0Sbeck .local_tm= {
13922dc6bcb0Sbeck .tm_year=116,
13932dc6bcb0Sbeck .tm_mon=2,
13942dc6bcb0Sbeck .tm_mday=13,
13952dc6bcb0Sbeck .tm_hour=3,
13962dc6bcb0Sbeck .tm_min=0,
13972dc6bcb0Sbeck .tm_sec=0,
13982dc6bcb0Sbeck .tm_wday=0,
13992dc6bcb0Sbeck .tm_yday=72,
14002dc6bcb0Sbeck .tm_isdst=1,
14012dc6bcb0Sbeck .tm_gmtoff=-21600,
14022dc6bcb0Sbeck .tm_zone="MDT"
14032dc6bcb0Sbeck },
14042dc6bcb0Sbeck .gmt_tm= {
14052dc6bcb0Sbeck .tm_year=116,
14062dc6bcb0Sbeck .tm_mon=2,
14072dc6bcb0Sbeck .tm_mday=13,
14082dc6bcb0Sbeck .tm_hour=9,
14092dc6bcb0Sbeck .tm_min=0,
14102dc6bcb0Sbeck .tm_sec=0,
14112dc6bcb0Sbeck .tm_wday=0,
14122dc6bcb0Sbeck .tm_yday=72,
14132dc6bcb0Sbeck .tm_isdst=0,
14142dc6bcb0Sbeck .tm_gmtoff=0,
14152dc6bcb0Sbeck .tm_zone="GMT"
14162dc6bcb0Sbeck },
14172dc6bcb0Sbeck },
14182dc6bcb0Sbeck {
14192dc6bcb0Sbeck .descr="transition standard to daylight + 1",
14202dc6bcb0Sbeck .timezone="posix/America/Edmonton",
14212dc6bcb0Sbeck .time=1457859601,
14222dc6bcb0Sbeck .local_tm= {
14232dc6bcb0Sbeck .tm_year=116,
14242dc6bcb0Sbeck .tm_mon=2,
14252dc6bcb0Sbeck .tm_mday=13,
14262dc6bcb0Sbeck .tm_hour=3,
14272dc6bcb0Sbeck .tm_min=0,
14282dc6bcb0Sbeck .tm_sec=1,
14292dc6bcb0Sbeck .tm_wday=0,
14302dc6bcb0Sbeck .tm_yday=72,
14312dc6bcb0Sbeck .tm_isdst=1,
14322dc6bcb0Sbeck .tm_gmtoff=-21600,
14332dc6bcb0Sbeck .tm_zone="MDT"
14342dc6bcb0Sbeck },
14352dc6bcb0Sbeck .gmt_tm= {
14362dc6bcb0Sbeck .tm_year=116,
14372dc6bcb0Sbeck .tm_mon=2,
14382dc6bcb0Sbeck .tm_mday=13,
14392dc6bcb0Sbeck .tm_hour=9,
14402dc6bcb0Sbeck .tm_min=0,
14412dc6bcb0Sbeck .tm_sec=1,
14422dc6bcb0Sbeck .tm_wday=0,
14432dc6bcb0Sbeck .tm_yday=72,
14442dc6bcb0Sbeck .tm_isdst=0,
14452dc6bcb0Sbeck .tm_gmtoff=0,
14462dc6bcb0Sbeck .tm_zone="GMT"
14472dc6bcb0Sbeck },
14482dc6bcb0Sbeck },
14492dc6bcb0Sbeck {
14502dc6bcb0Sbeck .descr="transition standard to daylight - 1",
14512dc6bcb0Sbeck .timezone="right/America/Edmonton",
14522dc6bcb0Sbeck .time=1457859625,
14532dc6bcb0Sbeck .local_tm= {
14542dc6bcb0Sbeck .tm_year=116,
14552dc6bcb0Sbeck .tm_mon=2,
14562dc6bcb0Sbeck .tm_mday=13,
14572dc6bcb0Sbeck .tm_hour=1,
14582dc6bcb0Sbeck .tm_min=59,
14592dc6bcb0Sbeck .tm_sec=59,
14602dc6bcb0Sbeck .tm_wday=0,
14612dc6bcb0Sbeck .tm_yday=72,
14622dc6bcb0Sbeck .tm_isdst=0,
14632dc6bcb0Sbeck .tm_gmtoff=-25200,
14642dc6bcb0Sbeck .tm_zone="MST"
14652dc6bcb0Sbeck },
14662dc6bcb0Sbeck .gmt_tm= {
14672dc6bcb0Sbeck .tm_year=116,
14682dc6bcb0Sbeck .tm_mon=2,
14692dc6bcb0Sbeck .tm_mday=13,
14702dc6bcb0Sbeck .tm_hour=9,
14712dc6bcb0Sbeck .tm_min=0,
14722dc6bcb0Sbeck .tm_sec=25,
14732dc6bcb0Sbeck .tm_wday=0,
14742dc6bcb0Sbeck .tm_yday=72,
14752dc6bcb0Sbeck .tm_isdst=0,
14762dc6bcb0Sbeck .tm_gmtoff=0,
14772dc6bcb0Sbeck .tm_zone="GMT"
14782dc6bcb0Sbeck },
14792dc6bcb0Sbeck },
14802dc6bcb0Sbeck {
14812dc6bcb0Sbeck .descr="transition standard to daylight",
14822dc6bcb0Sbeck .timezone="right/America/Edmonton",
14832dc6bcb0Sbeck .time=1457859626,
14842dc6bcb0Sbeck .local_tm= {
14852dc6bcb0Sbeck .tm_year=116,
14862dc6bcb0Sbeck .tm_mon=2,
14872dc6bcb0Sbeck .tm_mday=13,
14882dc6bcb0Sbeck .tm_hour=3,
14892dc6bcb0Sbeck .tm_min=0,
14902dc6bcb0Sbeck .tm_sec=0,
14912dc6bcb0Sbeck .tm_wday=0,
14922dc6bcb0Sbeck .tm_yday=72,
14932dc6bcb0Sbeck .tm_isdst=1,
14942dc6bcb0Sbeck .tm_gmtoff=-21600,
14952dc6bcb0Sbeck .tm_zone="MDT"
14962dc6bcb0Sbeck },
14972dc6bcb0Sbeck .gmt_tm= {
14982dc6bcb0Sbeck .tm_year=116,
14992dc6bcb0Sbeck .tm_mon=2,
15002dc6bcb0Sbeck .tm_mday=13,
15012dc6bcb0Sbeck .tm_hour=9,
15022dc6bcb0Sbeck .tm_min=0,
15032dc6bcb0Sbeck .tm_sec=26,
15042dc6bcb0Sbeck .tm_wday=0,
15052dc6bcb0Sbeck .tm_yday=72,
15062dc6bcb0Sbeck .tm_isdst=0,
15072dc6bcb0Sbeck .tm_gmtoff=0,
15082dc6bcb0Sbeck .tm_zone="GMT"
15092dc6bcb0Sbeck },
15102dc6bcb0Sbeck },
15112dc6bcb0Sbeck {
15122dc6bcb0Sbeck .descr="transition standard to daylight + 1",
15132dc6bcb0Sbeck .timezone="right/America/Edmonton",
15142dc6bcb0Sbeck .time=1457859627,
15152dc6bcb0Sbeck .local_tm= {
15162dc6bcb0Sbeck .tm_year=116,
15172dc6bcb0Sbeck .tm_mon=2,
15182dc6bcb0Sbeck .tm_mday=13,
15192dc6bcb0Sbeck .tm_hour=3,
15202dc6bcb0Sbeck .tm_min=0,
15212dc6bcb0Sbeck .tm_sec=1,
15222dc6bcb0Sbeck .tm_wday=0,
15232dc6bcb0Sbeck .tm_yday=72,
15242dc6bcb0Sbeck .tm_isdst=1,
15252dc6bcb0Sbeck .tm_gmtoff=-21600,
15262dc6bcb0Sbeck .tm_zone="MDT"
15272dc6bcb0Sbeck },
15282dc6bcb0Sbeck .gmt_tm= {
15292dc6bcb0Sbeck .tm_year=116,
15302dc6bcb0Sbeck .tm_mon=2,
15312dc6bcb0Sbeck .tm_mday=13,
15322dc6bcb0Sbeck .tm_hour=9,
15332dc6bcb0Sbeck .tm_min=0,
15342dc6bcb0Sbeck .tm_sec=27,
15352dc6bcb0Sbeck .tm_wday=0,
15362dc6bcb0Sbeck .tm_yday=72,
15372dc6bcb0Sbeck .tm_isdst=0,
15382dc6bcb0Sbeck .tm_gmtoff=0,
15392dc6bcb0Sbeck .tm_zone="GMT"
15402dc6bcb0Sbeck },
15412dc6bcb0Sbeck },
15422dc6bcb0Sbeck {
15432dc6bcb0Sbeck .descr="transition daylight to standard - 1",
15442dc6bcb0Sbeck .timezone="posix/America/Edmonton",
15452dc6bcb0Sbeck .time=1478419199,
15462dc6bcb0Sbeck .local_tm= {
15472dc6bcb0Sbeck .tm_year=116,
15482dc6bcb0Sbeck .tm_mon=10,
15492dc6bcb0Sbeck .tm_mday=6,
15502dc6bcb0Sbeck .tm_hour=1,
15512dc6bcb0Sbeck .tm_min=59,
15522dc6bcb0Sbeck .tm_sec=59,
15532dc6bcb0Sbeck .tm_wday=0,
15542dc6bcb0Sbeck .tm_yday=310,
15552dc6bcb0Sbeck .tm_isdst=1,
15562dc6bcb0Sbeck .tm_gmtoff=-21600,
15572dc6bcb0Sbeck .tm_zone="MDT"
15582dc6bcb0Sbeck },
15592dc6bcb0Sbeck .gmt_tm= {
15602dc6bcb0Sbeck .tm_year=116,
15612dc6bcb0Sbeck .tm_mon=10,
15622dc6bcb0Sbeck .tm_mday=6,
15632dc6bcb0Sbeck .tm_hour=7,
15642dc6bcb0Sbeck .tm_min=59,
15652dc6bcb0Sbeck .tm_sec=59,
15662dc6bcb0Sbeck .tm_wday=0,
15672dc6bcb0Sbeck .tm_yday=310,
15682dc6bcb0Sbeck .tm_isdst=0,
15692dc6bcb0Sbeck .tm_gmtoff=0,
15702dc6bcb0Sbeck .tm_zone="GMT"
15712dc6bcb0Sbeck },
15722dc6bcb0Sbeck },
15732dc6bcb0Sbeck {
15742dc6bcb0Sbeck .descr="transition daylight to standard",
15752dc6bcb0Sbeck .timezone="posix/America/Edmonton",
15762dc6bcb0Sbeck .time=1478419200,
15772dc6bcb0Sbeck .local_tm= {
15782dc6bcb0Sbeck .tm_year=116,
15792dc6bcb0Sbeck .tm_mon=10,
15802dc6bcb0Sbeck .tm_mday=6,
15812dc6bcb0Sbeck .tm_hour=1,
15822dc6bcb0Sbeck .tm_min=0,
15832dc6bcb0Sbeck .tm_sec=0,
15842dc6bcb0Sbeck .tm_wday=0,
15852dc6bcb0Sbeck .tm_yday=310,
15862dc6bcb0Sbeck .tm_isdst=0,
15872dc6bcb0Sbeck .tm_gmtoff=-25200,
15882dc6bcb0Sbeck .tm_zone="MST"
15892dc6bcb0Sbeck },
15902dc6bcb0Sbeck .gmt_tm= {
15912dc6bcb0Sbeck .tm_year=116,
15922dc6bcb0Sbeck .tm_mon=10,
15932dc6bcb0Sbeck .tm_mday=6,
15942dc6bcb0Sbeck .tm_hour=8,
15952dc6bcb0Sbeck .tm_min=0,
15962dc6bcb0Sbeck .tm_sec=0,
15972dc6bcb0Sbeck .tm_wday=0,
15982dc6bcb0Sbeck .tm_yday=310,
15992dc6bcb0Sbeck .tm_isdst=0,
16002dc6bcb0Sbeck .tm_gmtoff=0,
16012dc6bcb0Sbeck .tm_zone="GMT"
16022dc6bcb0Sbeck },
16032dc6bcb0Sbeck },
16042dc6bcb0Sbeck {
16052dc6bcb0Sbeck .descr="transition daylight to standard + 1",
16062dc6bcb0Sbeck .timezone="posix/America/Edmonton",
16072dc6bcb0Sbeck .time=1478419201,
16082dc6bcb0Sbeck .local_tm= {
16092dc6bcb0Sbeck .tm_year=116,
16102dc6bcb0Sbeck .tm_mon=10,
16112dc6bcb0Sbeck .tm_mday=6,
16122dc6bcb0Sbeck .tm_hour=1,
16132dc6bcb0Sbeck .tm_min=0,
16142dc6bcb0Sbeck .tm_sec=1,
16152dc6bcb0Sbeck .tm_wday=0,
16162dc6bcb0Sbeck .tm_yday=310,
16172dc6bcb0Sbeck .tm_isdst=0,
16182dc6bcb0Sbeck .tm_gmtoff=-25200,
16192dc6bcb0Sbeck .tm_zone="MST"
16202dc6bcb0Sbeck },
16212dc6bcb0Sbeck .gmt_tm= {
16222dc6bcb0Sbeck .tm_year=116,
16232dc6bcb0Sbeck .tm_mon=10,
16242dc6bcb0Sbeck .tm_mday=6,
16252dc6bcb0Sbeck .tm_hour=8,
16262dc6bcb0Sbeck .tm_min=0,
16272dc6bcb0Sbeck .tm_sec=1,
16282dc6bcb0Sbeck .tm_wday=0,
16292dc6bcb0Sbeck .tm_yday=310,
16302dc6bcb0Sbeck .tm_isdst=0,
16312dc6bcb0Sbeck .tm_gmtoff=0,
16322dc6bcb0Sbeck .tm_zone="GMT"
16332dc6bcb0Sbeck },
16342dc6bcb0Sbeck },
16352dc6bcb0Sbeck {
16362dc6bcb0Sbeck .descr="transition daylight to standard - 1",
16372dc6bcb0Sbeck .timezone="right/America/Edmonton",
16382dc6bcb0Sbeck .time=1478419225,
16392dc6bcb0Sbeck .local_tm= {
16402dc6bcb0Sbeck .tm_year=116,
16412dc6bcb0Sbeck .tm_mon=10,
16422dc6bcb0Sbeck .tm_mday=6,
16432dc6bcb0Sbeck .tm_hour=1,
16442dc6bcb0Sbeck .tm_min=59,
16452dc6bcb0Sbeck .tm_sec=59,
16462dc6bcb0Sbeck .tm_wday=0,
16472dc6bcb0Sbeck .tm_yday=310,
16482dc6bcb0Sbeck .tm_isdst=1,
16492dc6bcb0Sbeck .tm_gmtoff=-21600,
16502dc6bcb0Sbeck .tm_zone="MDT"
16512dc6bcb0Sbeck },
16522dc6bcb0Sbeck .gmt_tm= {
16532dc6bcb0Sbeck .tm_year=116,
16542dc6bcb0Sbeck .tm_mon=10,
16552dc6bcb0Sbeck .tm_mday=6,
16562dc6bcb0Sbeck .tm_hour=8,
16572dc6bcb0Sbeck .tm_min=0,
16582dc6bcb0Sbeck .tm_sec=25,
16592dc6bcb0Sbeck .tm_wday=0,
16602dc6bcb0Sbeck .tm_yday=310,
16612dc6bcb0Sbeck .tm_isdst=0,
16622dc6bcb0Sbeck .tm_gmtoff=0,
16632dc6bcb0Sbeck .tm_zone="GMT"
16642dc6bcb0Sbeck },
16652dc6bcb0Sbeck },
16662dc6bcb0Sbeck {
16672dc6bcb0Sbeck .descr="transition daylight to standard",
16682dc6bcb0Sbeck .timezone="right/America/Edmonton",
16692dc6bcb0Sbeck .time=1478419226,
16702dc6bcb0Sbeck .local_tm= {
16712dc6bcb0Sbeck .tm_year=116,
16722dc6bcb0Sbeck .tm_mon=10,
16732dc6bcb0Sbeck .tm_mday=6,
16742dc6bcb0Sbeck .tm_hour=1,
16752dc6bcb0Sbeck .tm_min=0,
16762dc6bcb0Sbeck .tm_sec=0,
16772dc6bcb0Sbeck .tm_wday=0,
16782dc6bcb0Sbeck .tm_yday=310,
16792dc6bcb0Sbeck .tm_isdst=0,
16802dc6bcb0Sbeck .tm_gmtoff=-25200,
16812dc6bcb0Sbeck .tm_zone="MST"
16822dc6bcb0Sbeck },
16832dc6bcb0Sbeck .gmt_tm= {
16842dc6bcb0Sbeck .tm_year=116,
16852dc6bcb0Sbeck .tm_mon=10,
16862dc6bcb0Sbeck .tm_mday=6,
16872dc6bcb0Sbeck .tm_hour=8,
16882dc6bcb0Sbeck .tm_min=0,
16892dc6bcb0Sbeck .tm_sec=26,
16902dc6bcb0Sbeck .tm_wday=0,
16912dc6bcb0Sbeck .tm_yday=310,
16922dc6bcb0Sbeck .tm_isdst=0,
16932dc6bcb0Sbeck .tm_gmtoff=0,
16942dc6bcb0Sbeck .tm_zone="GMT"
16952dc6bcb0Sbeck },
16962dc6bcb0Sbeck },
16972dc6bcb0Sbeck {
16982dc6bcb0Sbeck .descr="transition daylight to standard + 1",
16992dc6bcb0Sbeck .timezone="right/America/Edmonton",
17002dc6bcb0Sbeck .time=1478419227,
17012dc6bcb0Sbeck .local_tm= {
17022dc6bcb0Sbeck .tm_year=116,
17032dc6bcb0Sbeck .tm_mon=10,
17042dc6bcb0Sbeck .tm_mday=6,
17052dc6bcb0Sbeck .tm_hour=1,
17062dc6bcb0Sbeck .tm_min=0,
17072dc6bcb0Sbeck .tm_sec=1,
17082dc6bcb0Sbeck .tm_wday=0,
17092dc6bcb0Sbeck .tm_yday=310,
17102dc6bcb0Sbeck .tm_isdst=0,
17112dc6bcb0Sbeck .tm_gmtoff=-25200,
17122dc6bcb0Sbeck .tm_zone="MST"
17132dc6bcb0Sbeck },
17142dc6bcb0Sbeck .gmt_tm= {
17152dc6bcb0Sbeck .tm_year=116,
17162dc6bcb0Sbeck .tm_mon=10,
17172dc6bcb0Sbeck .tm_mday=6,
17182dc6bcb0Sbeck .tm_hour=8,
17192dc6bcb0Sbeck .tm_min=0,
17202dc6bcb0Sbeck .tm_sec=27,
17212dc6bcb0Sbeck .tm_wday=0,
17222dc6bcb0Sbeck .tm_yday=310,
17232dc6bcb0Sbeck .tm_isdst=0,
17242dc6bcb0Sbeck .tm_gmtoff=0,
17252dc6bcb0Sbeck .tm_zone="GMT"
17262dc6bcb0Sbeck },
17272dc6bcb0Sbeck },
17282dc6bcb0Sbeck {
17292dc6bcb0Sbeck .descr = NULL,
17302dc6bcb0Sbeck },
17312dc6bcb0Sbeck };
17322dc6bcb0Sbeck
printtm(FILE * f,struct tm * tm)17332dc6bcb0Sbeck void printtm(FILE *f, struct tm *tm)
17342dc6bcb0Sbeck {
17352dc6bcb0Sbeck fprintf(f, "\t\t{\n\t\t\t.tm_year=%d,\n\t\t\t.tm_mon=%d,\n\t\t\t"
17362dc6bcb0Sbeck ".tm_mday=%d,\n\t\t\t.tm_hour=%d,\n\t\t\t.tm_min=%d,\n\t\t\t"
17372dc6bcb0Sbeck ".tm_sec=%d,\n\t\t\t.tm_wday=%d,\n\t\t\t.tm_yday=%d,\n\t\t\t"
17382dc6bcb0Sbeck ".tm_isdst=%d,\n\t\t\t.tm_gmtoff=%ld,\n\t\t\t.tm_zone=\"%s\""
17392dc6bcb0Sbeck "\n\t\t},\n",
17402dc6bcb0Sbeck tm->tm_year,
17412dc6bcb0Sbeck tm->tm_mon,
17422dc6bcb0Sbeck tm->tm_mday,
17432dc6bcb0Sbeck tm->tm_hour,
17442dc6bcb0Sbeck tm->tm_min,
17452dc6bcb0Sbeck tm->tm_sec,
17462dc6bcb0Sbeck tm->tm_wday,
17472dc6bcb0Sbeck tm->tm_yday,
17482dc6bcb0Sbeck tm->tm_isdst,
17492dc6bcb0Sbeck tm->tm_gmtoff,
17502dc6bcb0Sbeck tm->tm_zone);
17512dc6bcb0Sbeck }
17522dc6bcb0Sbeck
dotimetest(struct timetest * test,int print)17532dc6bcb0Sbeck int dotimetest(struct timetest *test, int print)
17542dc6bcb0Sbeck {
17552dc6bcb0Sbeck int failures = 0;
17562dc6bcb0Sbeck struct tm local = {}, gmt = {};
17572dc6bcb0Sbeck time_t converted;
17582dc6bcb0Sbeck if (gmtime_r(&test->time, &gmt) == NULL) {
17592dc6bcb0Sbeck memset(&gmt, 0, sizeof(gmt));
17602dc6bcb0Sbeck gmt.tm_zone="FAILURE";
17612dc6bcb0Sbeck } else {
17622dc6bcb0Sbeck converted = timegm(&gmt);
17632dc6bcb0Sbeck if (converted != test->time) {
17642dc6bcb0Sbeck fprintf(stderr, "FAIL: test \"%s\", tz \"%s\" timegm "
17652dc6bcb0Sbeck "does not match expected value\n", test->descr,
17662dc6bcb0Sbeck test->timezone);
17672dc6bcb0Sbeck fprintf(stderr, "expected: %lld\n", test->time);
17682dc6bcb0Sbeck fprintf(stderr, "actual: %lld\n", converted);
17692dc6bcb0Sbeck failures++;
17702dc6bcb0Sbeck }
17712dc6bcb0Sbeck }
17722dc6bcb0Sbeck if (!tm_match(&test->gmt_tm, &gmt)) {
17732dc6bcb0Sbeck fprintf(stderr, "FAIL: test \"%s\", tz \"%s\" gmtime_r does not"
17742dc6bcb0Sbeck " match expected value\n", test->descr, test->timezone);
17752dc6bcb0Sbeck fprintf(stderr, "expected: ");
17762dc6bcb0Sbeck printtm(stderr, &test->gmt_tm);
17772dc6bcb0Sbeck fprintf(stderr, "actual: ");
17782dc6bcb0Sbeck printtm(stderr, &gmt);
17792dc6bcb0Sbeck failures++;
17802dc6bcb0Sbeck }
17812dc6bcb0Sbeck setenv("TZ", test->timezone, 1);
17822dc6bcb0Sbeck if (localtime_r(&test->time, &local) == NULL) {
17832dc6bcb0Sbeck memset(&local, 0, sizeof(local));
17842dc6bcb0Sbeck local.tm_zone="FAILURE";
17852dc6bcb0Sbeck } else {
17862dc6bcb0Sbeck converted = mktime(&local);
17872dc6bcb0Sbeck if (converted != test->time) {
17882dc6bcb0Sbeck fprintf(stderr, "FAIL: test \"%s\", tz \"%s\" mktime "
17892dc6bcb0Sbeck "does not match expected value\n", test->descr,
17902dc6bcb0Sbeck test->timezone);
17912dc6bcb0Sbeck fprintf(stderr, "expected: %lld\n", test->time);
17922dc6bcb0Sbeck fprintf(stderr, "actual: %lld\n", converted);
17932dc6bcb0Sbeck failures++;
17942dc6bcb0Sbeck }
17952dc6bcb0Sbeck }
17962dc6bcb0Sbeck if (!tm_match(&test->local_tm, &local)) {
17972dc6bcb0Sbeck fprintf(stderr, "FAIL: test \"%s\", tz \"%s\" localtime_r does "
17982dc6bcb0Sbeck "not match expected value\n", test->descr, test->timezone);
17992dc6bcb0Sbeck fprintf(stderr, "expected: ");
18002dc6bcb0Sbeck printtm(stderr, &test->local_tm);
18012dc6bcb0Sbeck fprintf(stderr, "actual: ");
18022dc6bcb0Sbeck printtm(stderr, &local);
18032dc6bcb0Sbeck failures++;
18042dc6bcb0Sbeck }
18052dc6bcb0Sbeck if (print) {
18062dc6bcb0Sbeck printf("\t{\n\t\t.descr=\"%s\",\n\t\t.timezone=\"%s\",\n\t\t"
18072dc6bcb0Sbeck ".time=%lld,\n", test->descr, test->timezone, test->time);
18082dc6bcb0Sbeck printf("\t\t.local_tm=");
18092dc6bcb0Sbeck printtm(stdout, &local);
18102dc6bcb0Sbeck printf("\t\t.gmt_tm=");
18112dc6bcb0Sbeck printtm(stdout, &gmt);
18122dc6bcb0Sbeck printf("\t},\n");
18132dc6bcb0Sbeck }
18142dc6bcb0Sbeck return failures;
18152dc6bcb0Sbeck }
18162dc6bcb0Sbeck
18172dc6bcb0Sbeck
printtmdescr(FILE * f,struct tm * tm,char * descr)18182dc6bcb0Sbeck void printtmdescr(FILE *f, struct tm *tm, char * descr)
18192dc6bcb0Sbeck {
18202dc6bcb0Sbeck fprintf(f, "%s: ", descr);
18212dc6bcb0Sbeck printtm(f, tm);
18222dc6bcb0Sbeck }
18232dc6bcb0Sbeck
main()18242dc6bcb0Sbeck int main() {
18252dc6bcb0Sbeck int failures = 0;
18262dc6bcb0Sbeck int verbose = 0;
18272dc6bcb0Sbeck struct stat sb;
1828*1a002d0cSmbuhl size_t i;
18292dc6bcb0Sbeck
1830e1da3696Santon if (stat("/usr/share/zoneinfo/posix", &sb) == -1 ||
1831e1da3696Santon stat("/usr/share/zoneinfo/right", &sb) == -1) {
1832e1da3696Santon fprintf(stderr, "POSIX time zones missing, run the following command:\n\n"
1833e1da3696Santon "\tmake -C ../../../../../share/zoneinfo other_two\n\n"
1834e1da3696Santon "SKIPPED\n");
18352dc6bcb0Sbeck exit(0);
18362dc6bcb0Sbeck }
18372dc6bcb0Sbeck
1838*1a002d0cSmbuhl for (i = 0; timetests[i].descr != NULL; i++) {
18392dc6bcb0Sbeck failures += dotimetest(&timetests[i], verbose);
18402dc6bcb0Sbeck }
18412dc6bcb0Sbeck if (failures)
18422dc6bcb0Sbeck fprintf(stderr, "FAIL: %d time test failures\n", failures);
18432dc6bcb0Sbeck else
18442dc6bcb0Sbeck printf("SUCCESS: no time test failures\n");
18452dc6bcb0Sbeck exit(failures);
18462dc6bcb0Sbeck }
18472dc6bcb0Sbeck
1848