first try at sensor watch time zones

This commit is contained in:
joeycastillo
2024-09-23 02:39:05 -04:00
parent 9d1e73106a
commit e029831029
2 changed files with 229 additions and 372 deletions

443
zones.c
View File

@ -1,50 +1,20 @@
#include "utz.h"
const urule_packed_t zone_rules[50] = {
const urule_packed_t zone_rules[20] = {
{ 8, 255, 7, 1, 1, 2, 0, 1, 4, 0}, // AN 2008 max - Apr Sun>=1 2:00s 0 S
{ 8, 255, 7, 1, 1, 2, 0, 2, 10, 1}, // AN 2008 max - Oct Sun>=1 2:00s 1:00 D
{ 8, 255, 7, 1, 1, 2, 0, 1, 4, 0}, // AS 2008 max - Apr Sun>=1 2:00s 0 S
{ 8, 255, 7, 1, 1, 2, 0, 2, 10, 1}, // AS 2008 max - Oct Sun>=1 2:00s 1:00 D
{ 8, 255, 7, 1, 1, 2, 0, 1, 4, 0}, // AT 2008 max - Apr Sun>=1 2:00s 0 S
{ 1, 255, 7, 1, 1, 2, 0, 2, 10, 1}, // AT 2001 max - Oct Sun>=1 2:00s 1:00 D
{ 16, 22, 6, 14, 1, 23, 0, 0, 2, 0}, // Brazil 2016 2022 - Feb Sun>=15 0:00 0 -
{ 23, 23, 6, 21, 1, 23, 0, 0, 2, 0}, // Brazil 2023 only - Feb Sun>=22 0:00 0 -
{ 24, 25, 6, 14, 1, 23, 0, 0, 2, 0}, // Brazil 2024 2025 - Feb Sun>=15 0:00 0 -
{ 26, 26, 6, 21, 1, 23, 0, 0, 2, 0}, // Brazil 2026 only - Feb Sun>=22 0:00 0 -
{ 27, 33, 6, 14, 1, 23, 0, 0, 2, 0}, // Brazil 2027 2033 - Feb Sun>=15 0:00 0 -
{ 34, 34, 6, 21, 1, 23, 0, 0, 2, 0}, // Brazil 2034 only - Feb Sun>=22 0:00 0 -
{ 35, 36, 6, 14, 1, 23, 0, 0, 2, 0}, // Brazil 2035 2036 - Feb Sun>=15 0:00 0 -
{ 37, 37, 6, 21, 1, 23, 0, 0, 2, 0}, // Brazil 2037 only - Feb Sun>=22 0:00 0 -
{ 38, 255, 6, 14, 1, 23, 0, 0, 2, 0}, // Brazil 2038 max - Feb Sun>=15 0:00 0 -
{ 8, 255, 7, 15, 1, 0, 0, 1, 10, 1}, // Brazil 2008 max - Oct Sun>=15 0:00 1:00 S
{ 7, 255, 7, 8, 1, 2, 0, 2, 3, 1}, // Canada 2007 max - Mar Sun>=8 2:00 1:00 D
{ 7, 255, 7, 1, 1, 1, 0, 1, 11, 0}, // Canada 2007 max - Nov Sun>=1 2:00 0 S
{ 16, 255, 7, 9, 0, 3, 0, 0, 5, 0}, // Chile 2016 max - May Sun>=9 3:00u 0 -
{ 16, 255, 7, 9, 0, 4, 0, 1, 8, 1}, // Chile 2016 max - Aug Sun>=9 4:00u 1:00 S
{ 19, 255, 7, 2, 0, 3, 0, 0, 4, 0}, // Chile 2019 max - Apr Sun>=2 3:00u 0 -
{ 23, 255, 7, 2, 0, 4, 0, 0, 9, 1}, // Chile 2023 max - Sep Sun>=2 4:00u 1:00 -
{ 0, 255, 7, 0, 0, 1, 0, 1, 3, 1}, // EU 1981 max - Mar lastSun 1:00u 1:00 S
{ 0, 255, 7, 0, 0, 1, 0, 0, 10, 0}, // EU 1996 max - Oct lastSun 1:00u 0 -
{ 17, 19, 0, 22, 1, 0, 0, 2, 3, 1}, // Iran 2017 2019 - Mar 22 0:00 1:00 D
{ 20, 20, 0, 21, 1, 0, 0, 2, 3, 1}, // Iran 2020 only - Mar 21 0:00 1:00 D
{ 21, 23, 0, 22, 1, 0, 0, 2, 3, 1}, // Iran 2021 2023 - Mar 22 0:00 1:00 D
{ 24, 24, 0, 21, 1, 0, 0, 2, 3, 1}, // Iran 2024 only - Mar 21 0:00 1:00 D
{ 25, 27, 0, 22, 1, 0, 0, 2, 3, 1}, // Iran 2025 2027 - Mar 22 0:00 1:00 D
{ 28, 29, 0, 21, 1, 0, 0, 2, 3, 1}, // Iran 2028 2029 - Mar 21 0:00 1:00 D
{ 30, 31, 0, 22, 1, 0, 0, 2, 3, 1}, // Iran 2030 2031 - Mar 22 0:00 1:00 D
{ 32, 33, 0, 21, 1, 0, 0, 2, 3, 1}, // Iran 2032 2033 - Mar 21 0:00 1:00 D
{ 34, 35, 0, 22, 1, 0, 0, 2, 3, 1}, // Iran 2034 2035 - Mar 22 0:00 1:00 D
{ 36, 255, 0, 21, 1, 0, 0, 2, 3, 1}, // Iran 2036 max - Mar 21 0:00 1:00 D
{ 17, 19, 0, 21, 1, 23, 0, 1, 9, 0}, // Iran 2017 2019 - Sep 22 0:00 0 S
{ 20, 20, 0, 20, 1, 23, 0, 1, 9, 0}, // Iran 2020 only - Sep 21 0:00 0 S
{ 21, 23, 0, 21, 1, 23, 0, 1, 9, 0}, // Iran 2021 2023 - Sep 22 0:00 0 S
{ 24, 24, 0, 20, 1, 23, 0, 1, 9, 0}, // Iran 2024 only - Sep 21 0:00 0 S
{ 25, 27, 0, 21, 1, 23, 0, 1, 9, 0}, // Iran 2025 2027 - Sep 22 0:00 0 S
{ 28, 29, 0, 20, 1, 23, 0, 1, 9, 0}, // Iran 2028 2029 - Sep 21 0:00 0 S
{ 30, 31, 0, 21, 1, 23, 0, 1, 9, 0}, // Iran 2030 2031 - Sep 22 0:00 0 S
{ 32, 33, 0, 20, 1, 23, 0, 1, 9, 0}, // Iran 2032 2033 - Sep 21 0:00 0 S
{ 34, 35, 0, 21, 1, 23, 0, 1, 9, 0}, // Iran 2034 2035 - Sep 22 0:00 0 S
{ 36, 255, 0, 20, 1, 23, 0, 1, 9, 0}, // Iran 2036 max - Sep 21 0:00 0 S
{ 2, 255, 7, 1, 1, 2, 0, 2, 4, 1}, // Mexico 2002 max - Apr Sun>=1 2:00 1:00 D
{ 2, 255, 7, 0, 1, 1, 0, 1, 10, 0}, // Mexico 2002 max - Oct lastSun 2:00 0 S
{ 23, 255, 5, 0, 1, 0, 0, 1, 4, 1}, // Egypt 2023 max - Apr lastFri 0:00 1:00 S
{ 23, 255, 4, 0, 1, 23, 0, 0, 10, 0}, // Egypt 2023 max - Oct lastThu 24:00 0 -
{ 8, 255, 7, 1, 1, 2, 0, 1, 4, 0}, // NZ 2008 max - Apr Sun>=1 2:00s 0 S
{ 7, 255, 7, 0, 1, 2, 0, 2, 9, 1}, // NZ 2007 max - Sep lastSun 2:00s 1:00 D
{ 7, 255, 7, 8, 1, 2, 0, 2, 3, 1}, // US 2007 max - Mar Sun>=8 2:00 1:00 D
@ -53,251 +23,192 @@ const urule_packed_t zone_rules[50] = {
{ 13, 255, 7, 0, 1, 1, 0, 1, 10, 0}, // Zion 2013 max - Oct lastSun 2:00 0 S
};
const char zone_abrevs[209] = {
'E','E','S','T','\0',
'W','A','T','\0',
'C','A','T','\0',
'E','A','T','\0',
const char zone_abrevs[224] = {
'S','S','T','\0',
'H','S','T','\0',
'A','K','%','c','T','\0',
'A','R','S','T','\0',
'C','%','c','T','\0',
'M','%','c','T','\0',
'A','%','c','T','\0',
'P','%','c','T','\0',
'A','M','T','\0',
'E','%','c','T','\0',
'M','%','c','T','\0',
'M','S','T','\0',
'C','%','c','T','\0',
'C','S','T','\0',
'C','L','%','c','T','\0',
'B','R','%','c','T','\0',
'E','%','c','T','\0',
'A','%','c','T','\0',
'-','0','4','\0',
'-','0','4','/','-','0','3','\0',
'-','0','3','/','-','0','2','\0',
'N','%','c','T','\0',
'I','C','T','\0',
'G','S','T','\0',
'H','K','S','T','\0',
'I','%','c','T','\0',
'P','K','S','T','\0',
'N','P','T','\0',
'I','S','T','\0',
'A','S','T','\0',
'K','S','T','\0',
'I','R','%','c','T','\0',
'J','S','T','\0',
'M','M','T','\0',
'A','C','%','c','T','\0',
'A','E','S','T','\0',
'A','C','S','T','\0',
'A','E','%','c','T','\0',
'A','W','S','T','\0',
'-','0','2','/','-','0','1','\0',
'U','T','C','\0',
'G','M','T','/','B','S','T','\0',
'W','A','T','\0',
'C','E','%','c','T','\0',
'E','E','%','c','T','\0',
'C','A','T','\0',
'I','%','c','T','\0',
'E','A','T','\0',
'+','0','3','\0',
'G','M','T','/','B','S','T','\0',
'M','S','K','\0',
'N','Z','%','c','T','\0',
'+','0','3','3','0','/','+','0','4','3','0','\0',
'+','0','4','\0',
'I','S','T','\0',
'+','0','5','4','5','\0',
'+','0','6','3','0','\0',
'+','0','7','\0',
'H','K','S','T','\0',
'+','0','8','\0',
'A','W','S','T','\0',
'J','S','T','\0',
'K','S','T','\0',
'A','C','S','T','\0',
'A','C','%','c','T','\0',
'A','E','S','T','\0',
'A','E','%','c','T','\0',
'C','h','S','T','\0',
'H','S','T','\0',
'S','S','T','\0',
'+','1','2','\0',
'N','Z','%','c','T','\0',
};
const uzone_packed_t zone_defns[46] = {
// Africa/Cairo 2:00 Egypt EE%sT
{ 8, 0, 0, 0},
// Africa/Lagos 1:00 - WAT
{ 4, 0, 0, 5},
// Africa/Maputo 2:00 - CAT
{ 8, 0, 0, 9},
// Africa/Nairobi 3:00 - EAT
{ 12, 0, 0, 13},
// America/Anchorage -9:00 US AK%sT
{-36, 46, 2, 17},
// America/Argentina/Buenos_Aires -3:00 Arg AR%sT
{-12, 0, 0, 23},
// America/Chicago -6:00 US C%sT
{-24, 46, 2, 28},
// America/Denver -7:00 US M%sT
{-28, 46, 2, 33},
// America/Halifax -4:00 Canada A%sT
{-16, 16, 2, 38},
// America/Los_Angeles -8:00 US P%sT
// America/Tijuana -8:00 US P%sT
{-32, 46, 2, 43},
// America/Manaus -4:00 - AMT
{-16, 0, 0, 48},
// America/Mexico_City -6:00 Mexico C%sT
{-24, 42, 2, 28},
// America/New_York -5:00 US E%sT
{-20, 46, 2, 52},
// America/Phoenix -7:00 - MST
{-28, 0, 0, 57},
// America/Regina -6:00 - CST
{-24, 0, 0, 61},
// America/Santiago -4:00 Chile CL%sT
{-16, 18, 2, 65},
// America/Sao_Paulo -3:00 Brazil BR%sT
{-12, 6, 10, 71},
// America/St_Johns -3:30 Canada N%sT
{-10, 16, 2, 77},
// Asia/Bangkok 7:00 - ICT
{ 28, 0, 0, 82},
// Asia/Dubai 4:00 - GST
{ 16, 0, 0, 86},
// Asia/Hong_Kong 8:00 HK HK%sT
{ 32, 0, 0, 90},
// Asia/Jerusalem 2:00 Zion I%sT
{ 8, 48, 2, 95},
// Asia/Karachi 5:00 Pakistan PK%sT
{ 20, 0, 0, 100},
// Asia/Kathmandu 5:45 - NPT
{ 23, 0, 0, 105},
// Asia/Kolkata 5:30 - IST
{ 22, 0, 0, 109},
// Asia/Riyadh 3:00 - AST
{ 12, 0, 0, 113},
// Asia/Seoul 9:00 ROK K%sT
{ 36, 0, 0, 117},
// Asia/Shanghai 8:00 PRC C%sT
// Asia/Taipei 8:00 Taiwan C%sT
{ 32, 0, 0, 61},
// Asia/Tehran 3:30 Iran IR%sT
{ 14, 22, 20, 121},
// Asia/Tokyo 9:00 Japan J%sT
{ 36, 0, 0, 127},
// Asia/Yangon 6:30 - MMT
{ 26, 0, 0, 131},
// Australia/Adelaide 9:30 AS AC%sT
{ 38, 2, 2, 135},
// Australia/Brisbane 10:00 AQ AE%sT
{ 40, 0, 0, 141},
// Australia/Darwin 9:30 Aus AC%sT
{ 38, 0, 0, 146},
// Australia/Hobart 10:00 AT AE%sT
{ 40, 4, 2, 151},
// Australia/Perth 8:00 AW AW%sT
{ 32, 0, 0, 157},
// Australia/Sydney 10:00 AN AE%sT
{ 40, 0, 2, 151},
// Europe/Belgrade 1:00 EU CE%sT
// Europe/Berlin 1:00 EU CE%sT
// Europe/Madrid 1:00 EU CE%sT
// Europe/Rome 1:00 EU CE%sT
{ 4, 20, 2, 162},
// Europe/Helsinki 2:00 EU EE%sT
{ 8, 20, 2, 168},
// Europe/Istanbul 3:00 - +03
{ 12, 0, 0, 174},
// Europe/London 0:00 EU GMT/BST
{ 0, 20, 2, 178},
// Europe/Moscow 3:00 - MSK
{ 12, 0, 0, 186},
// Pacific/Auckland 12:00 NZ NZ%sT
{ 48, 44, 2, 190},
// Pacific/Guam 10:00 - ChST
{ 40, 0, 0, 196},
// Pacific/Honolulu -10:00 - HST
{-40, 0, 0, 201},
// Pacific/Pago_Pago -11:00 - SST
{-44, 0, 0, 205},
{-44, 0, 0, 0},
// Pacific/Honolulu -10:00 - HST
{-40, 0, 0, 4},
// America/Anchorage -9:00 US AK%sT
{-36, 16, 2, 8},
// America/Los_Angeles -8:00 US P%sT
{-32, 16, 2, 14},
// America/Denver -7:00 US M%sT
{-28, 16, 2, 19},
// America/Phoenix -7:00 - MST
{-28, 0, 0, 24},
// America/Chicago -6:00 US C%sT
{-24, 16, 2, 28},
// America/Regina -6:00 - CST
{-24, 0, 0, 33},
// America/New_York -5:00 US E%sT
{-20, 16, 2, 37},
// America/Halifax -4:00 Canada A%sT
{-16, 6, 2, 42},
// America/Manaus -4:00 - -04
{-16, 0, 0, 47},
// America/Santiago -4:00 Chile -04/-03
{-16, 8, 2, 51},
// America/Sao_Paulo -3:00 Brazil -03/-02
{-12, 0, 0, 59},
// America/St_Johns -3:30 Canada N%sT
{-10, 6, 2, 67},
// America/Nuuk -2:00 EU -02/-01
{ -8, 10, 2, 72},
// Etc/UTC 0 - UTC
{ 0, 0, 0, 80},
// Europe/London 0:00 EU GMT/BST
{ 0, 10, 2, 84},
// Africa/Lagos 1:00 - WAT
{ 4, 0, 0, 92},
// Europe/Berlin 1:00 EU CE%sT
{ 4, 10, 2, 96},
// Africa/Cairo 2:00 Egypt EE%sT
{ 8, 12, 2, 102},
// Africa/Maputo 2:00 - CAT
{ 8, 0, 0, 108},
// Asia/Jerusalem 2:00 Zion I%sT
{ 8, 18, 2, 112},
// Europe/Helsinki 2:00 EU EE%sT
{ 8, 10, 2, 102},
// Africa/Nairobi 3:00 - EAT
{ 12, 0, 0, 117},
// Asia/Riyadh 3:00 - +03
{ 12, 0, 0, 121},
// Europe/Moscow 3:00 - MSK
{ 12, 0, 0, 125},
// Asia/Tehran 3:30 Iran +0330/+0430
{ 14, 0, 0, 129},
// Asia/Dubai 4:00 - +04
{ 16, 0, 0, 141},
// Asia/Kolkata 5:30 - IST
{ 22, 0, 0, 145},
// Asia/Kathmandu 5:45 - +0545
{ 23, 0, 0, 149},
// Asia/Yangon 6:30 - +0630
{ 26, 0, 0, 155},
// Asia/Bangkok 7:00 - +07
{ 28, 0, 0, 161},
// Asia/Shanghai 8:00 PRC C%sT
{ 32, 0, 0, 33},
// Asia/Hong_Kong 8:00 HK HK%sT
{ 32, 0, 0, 165},
// Asia/Singapore 8:00 - +08
{ 32, 0, 0, 170},
// Australia/Perth 8:00 AW AW%sT
{ 32, 0, 0, 174},
// Asia/Tokyo 9:00 Japan J%sT
{ 36, 0, 0, 179},
// Asia/Seoul 9:00 ROK K%sT
{ 36, 0, 0, 183},
// Australia/Darwin 9:30 Aus AC%sT
{ 38, 0, 0, 187},
// Australia/Adelaide 9:30 AS AC%sT
{ 38, 2, 2, 192},
// Australia/Brisbane 10:00 AQ AE%sT
{ 40, 0, 0, 198},
// Australia/Hobart 10:00 AT AE%sT
{ 40, 4, 2, 203},
// Australia/Sydney 10:00 AN AE%sT
{ 40, 0, 2, 203},
// Pacific/Guam 10:00 - ChST
{ 40, 0, 0, 209},
// Pacific/Tarawa 12:00 - +12
{ 48, 0, 0, 214},
// Pacific/Auckland 12:00 NZ NZ%sT
{ 48, 14, 2, 218},
};
const unsigned char zone_names[961] = {
'A','d','e','l','a','i','d','e','\0', 31, // Adelaide
'A','h','m','e','d','a','b','a','d','\0', 24, // Ahmedabad
'A','n','c','h','o','r','a','g','e','\0', 4, // Anchorage
'A','n','k','a','r','a','\0', 39, // Ankara
'A','t','l','a','n','t','a','\0', 12, // Atlanta
'A','u','c','k','l','a','n','d','\0', 42, // Auckland
'B','a','n','g','a','l','o','r','e','\0', 24, // Bangalore
'B','a','n','g','k','o','k','\0', 18, // Bangkok
'B','a','r','c','e','l','o','n','a','\0', 37, // Barcelona
'B','e','i','j','i','n','g','\0', 27, // Beijing
'B','e','l','g','r','a','d','e','\0', 37, // Belgrade
'B','e','l','o',' ','H','o','r','i','z','o','n','t','e','\0', 16, // Belo Horizonte
'B','e','r','l','i','n','\0', 37, // Berlin
'B','o','s','t','o','n','\0', 12, // Boston
'B','r','a','z','z','a','v','i','l','l','e','\0', 1, // Brazzaville
'B','r','i','s','b','a','n','e','\0', 32, // Brisbane
'B','u','e','n','o','s',' ','A','i','r','e','s','\0', 5, // Buenos Aires
'C','a','i','r','o','\0', 0, // Cairo
'C','a','l','c','u','t','t','a','\0', 24, // Calcutta
'C','h','a','n','g','z','h','o','u','\0', 27, // Changzhou
'C','h','e','n','g','d','u','\0', 27, // Chengdu
'C','h','e','n','n','a','i','\0', 24, // Chennai
'C','h','i','c','a','g','o','\0', 6, // Chicago
'C','h','o','n','g','q','i','n','g','\0', 27, // Chongqing
'D','a','l','l','a','s','F','o','r','t',' ','W','o','r','t','h','\0', 6, // DallasFort Worth
'D','a','r','w','i','n','\0', 33, // Darwin
'D','e','l','h','i','\0', 24, // Delhi
'D','e','n','v','e','r','\0', 7, // Denver
'D','u','b','a','i','\0', 19, // Dubai
'G','u','a','d','a','l','a','j','a','r','a','\0', 11, // Guadalajara
'G','u','a','m','\0', 43, // Guam
'G','u','a','n','g','z','h','o','u','\0', 27, // Guangzhou
'H','a','l','i','f','a','x','\0', 8, // Halifax
'H','a','m','b','u','r','g','\0', 37, // Hamburg
'H','a','n','g','z','h','o','u','\0', 27, // Hangzhou
'H','a','r','a','r','e','\0', 2, // Harare
'H','e','l','s','i','n','k','i','\0', 38, // Helsinki
'H','o','b','a','r','t','\0', 34, // Hobart
'H','o','n','g',' ','K','o','n','g','\0', 20, // Hong Kong
'H','o','n','o','l','u','l','u','\0', 44, // Honolulu
'H','o','u','s','t','o','n','\0', 6, // Houston
'H','y','d','e','r','a','b','a','d','\0', 24, // Hyderabad
'I','n','l','a','n','d',' ','E','m','p','i','r','e','\0', 9, // Inland Empire
'I','s','t','a','n','b','u','l','\0', 39, // Istanbul
'J','e','r','u','s','a','l','e','m','\0', 21, // Jerusalem
'J','i','n','a','n','\0', 27, // Jinan
'K','a','r','a','c','h','i','\0', 22, // Karachi
'K','a','t','m','a','n','d','u','\0', 23, // Katmandu
'K','o','l','k','a','t','a','\0', 24, // Kolkata
'K','u','w','a','i','t','\0', 25, // Kuwait
'L','a','h','o','r','e','\0', 22, // Lahore
'L','o','n','d','o','n','\0', 40, // London
'L','o','s',' ','A','n','g','e','l','e','s','\0', 9, // Los Angeles
'M','a','d','r','i','d','\0', 37, // Madrid
'M','a','n','a','u','s','\0', 10, // Manaus
'M','e','x','i','c','o',' ','C','i','t','y','\0', 11, // Mexico City
'M','i','a','m','i','\0', 12, // Miami
'M','i','d','w','a','y','\0', 45, // Midway
'M','i','l','a','n','\0', 37, // Milan
'M','o','s','c','o','w','\0', 41, // Moscow
'M','u','m','b','a','i','\0', 24, // Mumbai
'M','u','n','i','c','h','\0', 37, // Munich
'N','a','g','o','y','a','\0', 29, // Nagoya
'N','a','i','r','o','b','i','\0', 3, // Nairobi
'N','a','n','c','h','a','n','g','\0', 27, // Nanchang
'N','a','n','j','i','n','g','\0', 27, // Nanjing
'N','e','w',' ','Y','o','r','k','\0', 12, // New York
'O','s','a','k','a','\0', 29, // Osaka
'P','e','r','t','h','\0', 35, // Perth
'P','h','i','l','a','d','e','l','p','h','i','a','\0', 12, // Philadelphia
'P','h','o','e','n','i','x','\0', 13, // Phoenix
'P','u','n','e','\0', 24, // Pune
'Q','i','n','g','d','a','o','\0', 27, // Qingdao
'R','a','n','g','o','o','n','\0', 30, // Rangoon
'R','e','g','i','n','a','\0', 14, // Regina
'R','h','i','n','e','-','R','u','h','r','\0', 37, // Rhine-Ruhr
'R','i','o',' ','d','e',' ','J','a','n','e','i','r','o','\0', 16, // Rio de Janeiro
'R','o','m','e','\0', 37, // Rome
'S','a','n',' ','F','r','a','n','c','i','s','c','o','\0', 9, // San Francisco
'S','a','n','t','i','a','g','o','\0', 15, // Santiago
'S','a','o',' ','P','a','u','l','o','\0', 16, // Sao Paulo
'S','a','r','a','j','e','v','o','\0', 37, // Sarajevo
'S','e','o','u','l','\0', 26, // Seoul
'S','h','a','n','g','h','a','i','\0', 27, // Shanghai
'S','h','e','n','y','a','n','g','\0', 27, // Shenyang
'S','h','e','n','z','h','e','n','\0', 27, // Shenzhen
'S','t',' ','J','o','h','n','s','\0', 17, // St Johns
'S','t','u','t','t','g','a','r','t','\0', 37, // Stuttgart
'S','u','r','a','t','\0', 24, // Surat
'S','y','d','n','e','y','\0', 36, // Sydney
'T','a','i','p','e','i','\0', 27, // Taipei
'T','e','h','r','a','n','\0', 28, // Tehran
'T','i','a','n','j','i','n','\0', 27, // Tianjin
'T','i','j','u','a','n','a','\0', 9, // Tijuana
'T','o','k','y','o','\0', 29, // Tokyo
'W','a','s','h','i','n','g','t','o','n',',',' ','D','.','C','.','\0', 12, // Washington, D.C.
'W','e','n','z','h','o','u','\0', 27, // Wenzhou
'W','u','h','a','n','\0', 27, // Wuhan
'X','i','\'','a','n','\0', 27, // Xi'an
'Z','h','e','n','g','z','h','o','u','\0', 27, // Zhengzhou
const unsigned char zone_names[506] = {
' ',' ',' ','A','S','a','m','o','a','\0', 0, // Pago Pago
'H','A','W','H','n','l','u','l','u','\0', 1, // Honolulu
'A','L','S','A','n','c','h','r','g','\0', 2, // Anchorage
' ',' ',' ','S','e','a','t','t','l','\0', 3, // Los Angeles
' ',' ',' ','D','e','n','v','e','r','\0', 4, // Denver
' ',' ',' ','A','r','z','o','n','a','\0', 5, // Phoenix
' ',' ','C','h','i','c','a','g','o','\0', 6, // Chicago
'C','A','N','R','e','g','i','n','a','\0', 7, // Regina
' ',' ',' ','N','Y','C',' ',' ',' ','\0', 8, // New York
'C','A','N','H','a','l','i','f','a','\0', 9, // Halifax
'B','R','Z','N','7','a','n','a','u','\0', 10, // Manaus
'C','H','L','S','t','i','a','g','o','\0', 11, // Santiago
'B','R','Z','S','a','o','P','l','o','\0', 12, // Sao Paulo
'C','A','N','S','t',' ','J','n','s','\0', 13, // St Johns
'G','R','N',' ',' ','N','u','u','k','\0', 14, // Nuuk
'U','T','C','+','0','0','0',' ',' ','\0', 15, // UTC
'E','U','R','L','o','n','d','o','n','\0', 16, // London
'N','I','G',' ','L','a','g','o','s','\0', 17, // Lagos
'G','E','E','B','e','r','l','i','n','\0', 18, // Berlin
' ',' ',' ','C','a','i','r','o',' ','\0', 19, // Cairo
'M','O','Z','N','7','a','p','t','o','\0', 20, // Maputo
'I','R',' ','J','r','u','s','l','m','\0', 21, // Jerusalem
'F','N','L','H','l','s','n','k','i','\0', 22, // Helsinki
'K','N','Y','N','a','i','r','o','b','\0', 23, // Nairobi
'S','A','U',' ','r','y','a','d','h','\0', 24, // Riyadh
'R','U','S','n','&','s','c','o','w','\0', 25, // Moscow
'I','R','N',' ','T','h','r','a','n','\0', 26, // Tehran
'U','A','E',' ','D','u','b','a','i','\0', 27, // Dubai
'I','T',' ',' ','I','n','d','i','a','\0', 28, // Kolkata
' ',' ',' ',' ','N','e','p','a','l','\0', 29, // Kathmandu
'M','N','M','Y','a','n','g','o','n','\0', 30, // Yangon
'T','H','A','B','n','g','k','o','k','\0', 31, // Bangkok
'C','H','I','S','h','n','g','h','i','\0', 32, // Shanghai
'C','H','I','H','n','g','K','n','g','\0', 33, // Hong Kong
'R','E','P','S','n','g','p','o','r','\0', 34, // Singapore
'A','U','S',' ','P','e','r','t','h','\0', 35, // Perth
'J','A','P',' ','T','o','k','y','o','\0', 36, // Tokyo
'K','O','R','S','e','o','u','l',' ','\0', 37, // Seoul
'A','U','S','D','a','r','u','i','n','\0', 38, // Darwin
'A','U','S','A','d','l','a','i','d','\0', 39, // Adelaide
'A','U','S','B','r','s','b','a','n','\0', 40, // Brisbane
'A','U','S',' ','H','o','b','r','t','\0', 41, // Hobart
'A','U','S','S','y','0','n','e','y','\0', 42, // Sydney
' ',' ',' ',' ','G','u','a','N','7','\0', 43, // Guam
' ',' ',' ','+',' ','1','2','0','0','\0', 44, // Tarawa
'Z','L',' ','A','u','c','k','n','d','\0', 45, // Auckland
};

158
zones.h
View File

@ -1,115 +1,61 @@
#ifndef _ZONES_H
#define _ZONES_H
const urule_packed_t zone_rules[50];
const char zone_abrevs[209];
const urule_packed_t zone_rules[20];
const char zone_abrevs[224];
#define MAX_ABREV_FORMATTER_LEN 7
#define MAX_ABREV_FORMATTER_LEN 11
const uzone_packed_t zone_defns[46];
#define UTZ_ADELAIDE &zone_defns[ 31]
#define UTZ_AHMEDABAD &zone_defns[ 24]
#define UTZ_ANCHORAGE &zone_defns[ 4]
#define UTZ_ANKARA &zone_defns[ 39]
#define UTZ_ATLANTA &zone_defns[ 12]
#define UTZ_AUCKLAND &zone_defns[ 42]
#define UTZ_BANGALORE &zone_defns[ 24]
#define UTZ_BANGKOK &zone_defns[ 18]
#define UTZ_BARCELONA &zone_defns[ 37]
#define UTZ_BEIJING &zone_defns[ 27]
#define UTZ_BELGRADE &zone_defns[ 37]
#define UTZ_BELO_HORIZONTE &zone_defns[ 16]
#define UTZ_BERLIN &zone_defns[ 37]
#define UTZ_BOSTON &zone_defns[ 12]
#define UTZ_BRAZZAVILLE &zone_defns[ 1]
#define UTZ_BRISBANE &zone_defns[ 32]
#define UTZ_BUENOS_AIRES &zone_defns[ 5]
#define UTZ_CAIRO &zone_defns[ 0]
#define UTZ_CALCUTTA &zone_defns[ 24]
#define UTZ_CHANGZHOU &zone_defns[ 27]
#define UTZ_CHENGDU &zone_defns[ 27]
#define UTZ_CHENNAI &zone_defns[ 24]
#define UTZ_CHICAGO &zone_defns[ 6]
#define UTZ_CHONGQING &zone_defns[ 27]
#define UTZ_DALLASFORT_WORTH &zone_defns[ 6]
#define UTZ_DARWIN &zone_defns[ 33]
#define UTZ_DELHI &zone_defns[ 24]
#define UTZ_DENVER &zone_defns[ 7]
#define UTZ_DUBAI &zone_defns[ 19]
#define UTZ_GUADALAJARA &zone_defns[ 11]
#define UTZ_GUAM &zone_defns[ 43]
#define UTZ_GUANGZHOU &zone_defns[ 27]
#define UTZ_HALIFAX &zone_defns[ 8]
#define UTZ_HAMBURG &zone_defns[ 37]
#define UTZ_HANGZHOU &zone_defns[ 27]
#define UTZ_HARARE &zone_defns[ 2]
#define UTZ_HELSINKI &zone_defns[ 38]
#define UTZ_HOBART &zone_defns[ 34]
#define UTZ_HONG_KONG &zone_defns[ 20]
#define UTZ_HONOLULU &zone_defns[ 44]
#define UTZ_HOUSTON &zone_defns[ 6]
#define UTZ_HYDERABAD &zone_defns[ 24]
#define UTZ_INLAND_EMPIRE &zone_defns[ 9]
#define UTZ_ISTANBUL &zone_defns[ 39]
#define UTZ_JERUSALEM &zone_defns[ 21]
#define UTZ_JINAN &zone_defns[ 27]
#define UTZ_KARACHI &zone_defns[ 22]
#define UTZ_KATMANDU &zone_defns[ 23]
#define UTZ_KOLKATA &zone_defns[ 24]
#define UTZ_KUWAIT &zone_defns[ 25]
#define UTZ_LAHORE &zone_defns[ 22]
#define UTZ_LONDON &zone_defns[ 40]
#define UTZ_LOS_ANGELES &zone_defns[ 9]
#define UTZ_MADRID &zone_defns[ 37]
#define UTZ_MANAUS &zone_defns[ 10]
#define UTZ_MEXICO_CITY &zone_defns[ 11]
#define UTZ_MIAMI &zone_defns[ 12]
#define UTZ_MIDWAY &zone_defns[ 45]
#define UTZ_MILAN &zone_defns[ 37]
#define UTZ_MOSCOW &zone_defns[ 41]
#define UTZ_MUMBAI &zone_defns[ 24]
#define UTZ_MUNICH &zone_defns[ 37]
#define UTZ_NAGOYA &zone_defns[ 29]
#define UTZ_NAIROBI &zone_defns[ 3]
#define UTZ_NANCHANG &zone_defns[ 27]
#define UTZ_NANJING &zone_defns[ 27]
#define UTZ_NEW_YORK &zone_defns[ 12]
#define UTZ_OSAKA &zone_defns[ 29]
#define UTZ_PERTH &zone_defns[ 35]
#define UTZ_PHILADELPHIA &zone_defns[ 12]
#define UTZ_PHOENIX &zone_defns[ 13]
#define UTZ_PUNE &zone_defns[ 24]
#define UTZ_QINGDAO &zone_defns[ 27]
#define UTZ_RANGOON &zone_defns[ 30]
#define UTZ_REGINA &zone_defns[ 14]
#define UTZ_RHINERUHR &zone_defns[ 37]
#define UTZ_RIO_DE_JANEIRO &zone_defns[ 16]
#define UTZ_ROME &zone_defns[ 37]
#define UTZ_SAN_FRANCISCO &zone_defns[ 9]
#define UTZ_SANTIAGO &zone_defns[ 15]
#define UTZ_SAO_PAULO &zone_defns[ 16]
#define UTZ_SARAJEVO &zone_defns[ 37]
#define UTZ_SEOUL &zone_defns[ 26]
#define UTZ_SHANGHAI &zone_defns[ 27]
#define UTZ_SHENYANG &zone_defns[ 27]
#define UTZ_SHENZHEN &zone_defns[ 27]
#define UTZ_ST_JOHNS &zone_defns[ 17]
#define UTZ_STUTTGART &zone_defns[ 37]
#define UTZ_SURAT &zone_defns[ 24]
#define UTZ_SYDNEY &zone_defns[ 36]
#define UTZ_TAIPEI &zone_defns[ 27]
#define UTZ_TEHRAN &zone_defns[ 28]
#define UTZ_TIANJIN &zone_defns[ 27]
#define UTZ_TIJUANA &zone_defns[ 9]
#define UTZ_TOKYO &zone_defns[ 29]
#define UTZ_WASHINGTON_DC &zone_defns[ 12]
#define UTZ_WENZHOU &zone_defns[ 27]
#define UTZ_WUHAN &zone_defns[ 27]
#define UTZ_XIAN &zone_defns[ 27]
#define UTZ_ZHENGZHOU &zone_defns[ 27]
#define UTZ_PAGO_PAGO &zone_defns[ 0]
#define UTZ_HONOLULU &zone_defns[ 1]
#define UTZ_ANCHORAGE &zone_defns[ 2]
#define UTZ_LOS_ANGELES &zone_defns[ 3]
#define UTZ_DENVER &zone_defns[ 4]
#define UTZ_PHOENIX &zone_defns[ 5]
#define UTZ_CHICAGO &zone_defns[ 6]
#define UTZ_REGINA &zone_defns[ 7]
#define UTZ_NEW_YORK &zone_defns[ 8]
#define UTZ_HALIFAX &zone_defns[ 9]
#define UTZ_MANAUS &zone_defns[ 10]
#define UTZ_SANTIAGO &zone_defns[ 11]
#define UTZ_SAO_PAULO &zone_defns[ 12]
#define UTZ_ST_JOHNS &zone_defns[ 13]
#define UTZ_NUUK &zone_defns[ 14]
#define UTZ_UTC &zone_defns[ 15]
#define UTZ_LONDON &zone_defns[ 16]
#define UTZ_LAGOS &zone_defns[ 17]
#define UTZ_BERLIN &zone_defns[ 18]
#define UTZ_CAIRO &zone_defns[ 19]
#define UTZ_MAPUTO &zone_defns[ 20]
#define UTZ_JERUSALEM &zone_defns[ 21]
#define UTZ_HELSINKI &zone_defns[ 22]
#define UTZ_NAIROBI &zone_defns[ 23]
#define UTZ_RIYADH &zone_defns[ 24]
#define UTZ_MOSCOW &zone_defns[ 25]
#define UTZ_TEHRAN &zone_defns[ 26]
#define UTZ_DUBAI &zone_defns[ 27]
#define UTZ_KOLKATA &zone_defns[ 28]
#define UTZ_KATHMANDU &zone_defns[ 29]
#define UTZ_YANGON &zone_defns[ 30]
#define UTZ_BANGKOK &zone_defns[ 31]
#define UTZ_SHANGHAI &zone_defns[ 32]
#define UTZ_HONG_KONG &zone_defns[ 33]
#define UTZ_SINGAPORE &zone_defns[ 34]
#define UTZ_PERTH &zone_defns[ 35]
#define UTZ_TOKYO &zone_defns[ 36]
#define UTZ_SEOUL &zone_defns[ 37]
#define UTZ_DARWIN &zone_defns[ 38]
#define UTZ_ADELAIDE &zone_defns[ 39]
#define UTZ_BRISBANE &zone_defns[ 40]
#define UTZ_HOBART &zone_defns[ 41]
#define UTZ_SYDNEY &zone_defns[ 42]
#define UTZ_GUAM &zone_defns[ 43]
#define UTZ_TARAWA &zone_defns[ 44]
#define UTZ_AUCKLAND &zone_defns[ 45]
#define NUM_ZONE_NAMES 100
#define MAX_ZONE_NAME_LEN 17
#define NUM_ZONE_NAMES 46
#define MAX_ZONE_NAME_LEN 10
const unsigned char zone_names[961];
const unsigned char zone_names[506];
#endif /* _ZONES_H */