From f9a92f498128ad2968e1956c7489140fe0e48801 Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Tue, 14 Sep 2021 14:37:53 -0700
Subject: [PROPOSED] Revert May patch to zone.tab
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This reverts the part of May’s “Merge timezones that are alike
since 1970” patch that affected the zone.tab file, to avoid
compatibility issues for Android mentioned by Almaz Mingaleev in:
https://mm.icann.org/pipermail/tz/2021-September/030387.html
* Makefile (check_tables): Allow zone.tab TZ values to be
taken from 'backward'.
* checktab.awk: Do not report an error for links in 'backward'
that do not have zone.tab entries.
* zone.tab: Revert the remaining part of May’s “Merge timezones
that are alike since 1970” patch to this file.
---
 Makefile     |  5 +--
 checktab.awk |  2 +-
 zone.tab     | 97 ++++++++++++++++++++++++++--------------------------
 3 files changed, 53 insertions(+), 51 deletions(-)

diff --git a/Makefile b/Makefile
index 8a7436a..33f3168 100644
--- a/Makefile
+++ b/Makefile
@@ -802,9 +802,10 @@ check_links:	checklinks.awk $(TDATA_TO_CHECK) tzdata.zi
 		$(AWK) -f checklinks.awk tzdata.zi
 		touch $@
 
-check_tables:	checktab.awk $(YDATA) $(ZONETABLES)
+check_tables:	checktab.awk $(YDATA) backward $(ZONETABLES)
 		for tab in $(ZONETABLES); do \
-		  $(AWK) -f checktab.awk -v zone_table=$$tab $(YDATA) \
+		  test "$$tab" = zone.tab && links='$(BACKWARD)' || links=''; \
+		  $(AWK) -f checktab.awk -v zone_table=$$tab $(YDATA) $$links \
 		    || exit; \
 		done
 		touch $@
diff --git a/checktab.awk b/checktab.awk
index 5748341..23e0a3a 100644
--- a/checktab.awk
+++ b/checktab.awk
@@ -148,7 +148,7 @@ $1 ~ /^#/ { next }
 		if ($3 ~ /%/) rulePercentUsed[$2] = 1
 	}
 	if (tz && tz ~ /\// && tz !~ /^Etc\//) {
-		if (!tztab[tz]) {
+		if (!tztab[tz] && FILENAME != "backward") {
 			printf "%s: no data for '%s'\n", zone_table, tz \
 				>>"/dev/stderr"
 			status = 1
diff --git a/zone.tab b/zone.tab
index e2062cf..10208a3 100644
--- a/zone.tab
+++ b/zone.tab
@@ -3,7 +3,7 @@
 # This file is in the public domain, so clarified as of
 # 2009-05-17 by Arthur David Olson.
 #
-# From Paul Eggert (2018-06-27):
+# From Paul Eggert (2021-09-14):
 # This file is intended as a backward-compatibility aid for older programs.
 # New programs should use zone1970.tab.  This file is like zone1970.tab (see
 # zone1970.tab's comments), but with the following additional restrictions:
@@ -17,6 +17,7 @@
 # that of zone1970.tab.
 #
 # Unlike zone1970.tab, this file's third column can contain duplicates,
+# a row's third column can be a Link from 'backward' instead of a Zone,
 # and a row's third column does not necessarily name the location given
 # by the row's second column.
 #
@@ -29,21 +30,21 @@
 AD	+4230+00131	Europe/Andorra
 AE	+2518+05518	Asia/Dubai
 AF	+3431+06912	Asia/Kabul
-AG	+1703-06148	America/Puerto_Rico
-AI	+1812-06304	America/Puerto_Rico
+AG	+1703-06148	America/Port_of_Spain
+AI	+1812-06304	America/Port_of_Spain
 AL	+4120+01950	Europe/Tirane
 AM	+4011+04430	Asia/Yerevan
 AO	-0848+01314	Africa/Lagos
 AQ	-7750+16636	Pacific/Auckland	New Zealand time - McMurdo, South Pole
 AQ	-6617+11031	Antarctica/Casey	Casey
 AQ	-6835+07758	Antarctica/Davis	Davis
-AQ	-6640+14001	Pacific/Port_Moresby	Dumont-d'Urville
+AQ	-6640+14001	Antarctica/DumontDUrville	Dumont-d'Urville
 AQ	-6736+06253	Antarctica/Mawson	Mawson
 AQ	-6448-06406	Antarctica/Palmer	Palmer
 AQ	-6734-06808	Antarctica/Rothera	Rothera
-AQ	-690022+0393524	Asia/Riyadh	Syowa
+AQ	-690022+0393524	Antarctica/Syowa	Syowa
 AQ	-720041+0023206	Antarctica/Troll	Troll
-AQ	-7824+10654	Asia/Urumqi	Vostok
+AQ	-7824+10654	Antarctica/Vostok	Vostok
 AR	-3436-05827	America/Argentina/Buenos_Aires	Buenos Aires (BA, CF)
 AR	-3124-06411	America/Argentina/Cordoba	Argentina (most areas: CB, CC, CN, ER, FM, MN, SE, SF)
 AR	-2447-06525	America/Argentina/Salta	Salta (SA, LP, NQ, RN)
@@ -70,7 +71,7 @@ AU	-3455+13835	Australia/Adelaide	South Australia
 AU	-1228+13050	Australia/Darwin	Northern Territory
 AU	-3157+11551	Australia/Perth	Western Australia (most areas)
 AU	-3143+12852	Australia/Eucla	Western Australia (Eucla)
-AW	+1230-06958	America/Puerto_Rico
+AW	+1230-06958	America/Curacao
 AX	+6006+01957	Europe/Helsinki
 AZ	+4023+04951	Asia/Baku
 BA	+4352+01825	Europe/Belgrade
@@ -82,11 +83,11 @@ BG	+4241+02319	Europe/Sofia
 BH	+2623+05035	Asia/Qatar
 BI	-0323+02922	Africa/Maputo
 BJ	+0629+00237	Africa/Lagos
-BL	+1753-06251	America/Puerto_Rico
+BL	+1753-06251	America/Port_of_Spain
 BM	+3217-06446	Atlantic/Bermuda
-BN	+0456+11455	Asia/Kuching
+BN	+0456+11455	Asia/Brunei
 BO	-1630-06809	America/La_Paz
-BQ	+120903-0681636	America/Puerto_Rico
+BQ	+120903-0681636	America/Curacao
 BR	-0351-03225	America/Noronha	Atlantic islands
 BR	-0127-04829	America/Belem	Para (east); Amapa
 BR	-0343-03830	America/Fortaleza	Brazil (northeast: MA, PI, CE, RN, PB)
@@ -103,7 +104,7 @@ BR	+0249-06040	America/Boa_Vista	Roraima
 BR	-0308-06001	America/Manaus	Amazonas (east)
 BR	-0640-06952	America/Eirunepe	Amazonas (west)
 BR	-0958-06748	America/Rio_Branco	Acre
-BS	+2505-07721	America/Toronto
+BS	+2505-07721	America/Nassau
 BT	+2728+08939	Asia/Thimphu
 BW	-2439+02555	Africa/Maputo
 BY	+5354+02734	Europe/Minsk
@@ -113,13 +114,13 @@ CA	+4439-06336	America/Halifax	Atlantic - NS (most areas); PE
 CA	+4612-05957	America/Glace_Bay	Atlantic - NS (Cape Breton)
 CA	+4606-06447	America/Moncton	Atlantic - New Brunswick
 CA	+5320-06025	America/Goose_Bay	Atlantic - Labrador (most areas)
-CA	+5125-05707	America/Puerto_Rico	AST - QC (Lower North Shore)
+CA	+5125-05707	America/Blanc-Sablon	AST - QC (Lower North Shore)
 CA	+4339-07923	America/Toronto	Eastern - ON, QC (most areas)
 CA	+4901-08816	America/Nipigon	Eastern - ON, QC (no DST 1967-73)
 CA	+4823-08915	America/Thunder_Bay	Eastern - ON (Thunder Bay)
 CA	+6344-06828	America/Iqaluit	Eastern - NU (most east areas)
 CA	+6608-06544	America/Pangnirtung	Eastern - NU (Pangnirtung)
-CA	+484531-0913718	America/Panama	EST - ON (Atikokan); NU (Coral H)
+CA	+484531-0913718	America/Atikokan	EST - ON (Atikokan); NU (Coral H)
 CA	+4953-09709	America/Winnipeg	Central - ON (west); Manitoba
 CA	+4843-09434	America/Rainy_River	Central - ON (Rainy R, Ft Frances)
 CA	+744144-0944945	America/Resolute	Central - NU (Resolute)
@@ -130,13 +131,13 @@ CA	+5333-11328	America/Edmonton	Mountain - AB; BC (E); SK (W)
 CA	+690650-1050310	America/Cambridge_Bay	Mountain - NU (west)
 CA	+6227-11421	America/Yellowknife	Mountain - NT (central)
 CA	+682059-1334300	America/Inuvik	Mountain - NT (west)
-CA	+4906-11631	America/Phoenix	MST - BC (Creston)
+CA	+4906-11631	America/Creston	MST - BC (Creston)
 CA	+5946-12014	America/Dawson_Creek	MST - BC (Dawson Cr, Ft St John)
 CA	+5848-12242	America/Fort_Nelson	MST - BC (Ft Nelson)
 CA	+6043-13503	America/Whitehorse	MST - Yukon (east)
 CA	+6404-13925	America/Dawson	MST - Yukon (west)
 CA	+4916-12307	America/Vancouver	Pacific - BC (most areas)
-CC	-1210+09655	Asia/Yangon
+CC	-1210+09655	Indian/Cocos
 CD	-0418+01518	Africa/Lagos	Dem. Rep. of Congo (west)
 CD	-1140+02728	Africa/Maputo	Dem. Rep. of Congo (east)
 CF	+0422+01835	Africa/Lagos
@@ -154,16 +155,16 @@ CO	+0436-07405	America/Bogota
 CR	+0956-08405	America/Costa_Rica
 CU	+2308-08222	America/Havana
 CV	+1455-02331	Atlantic/Cape_Verde
-CW	+1211-06900	America/Puerto_Rico
-CX	-1025+10543	Asia/Bangkok
+CW	+1211-06900	America/Curacao
+CX	-1025+10543	Indian/Christmas
 CY	+3510+03322	Asia/Nicosia	Cyprus (most areas)
 CY	+3507+03357	Asia/Famagusta	Northern Cyprus
 CZ	+5005+01426	Europe/Prague
 DE	+5230+01322	Europe/Berlin	Germany (most areas)
 DE	+4742+00841	Europe/Zurich	Swiss time
 DJ	+1136+04309	Africa/Nairobi
-DK	+5540+01235	Europe/Berlin
-DM	+1518-06124	America/Puerto_Rico
+DK	+5540+01235	Europe/Copenhagen
+DM	+1518-06124	America/Port_of_Spain
 DO	+1828-06954	America/Santo_Domingo
 DZ	+3647+00303	Africa/Algiers
 EC	-0210-07950	America/Guayaquil	Ecuador (mainland)
@@ -179,18 +180,18 @@ ET	+0902+03842	Africa/Nairobi
 FI	+6010+02458	Europe/Helsinki
 FJ	-1808+17825	Pacific/Fiji
 FK	-5142-05751	Atlantic/Stanley
-FM	+0725+15147	Pacific/Port_Moresby	Chuuk/Truk, Yap
-FM	+0658+15813	Pacific/Guadalcanal	Pohnpei/Ponape
+FM	+0725+15147	Pacific/Chuuk	Chuuk/Truk, Yap
+FM	+0658+15813	Pacific/Pohnpei	Pohnpei/Ponape
 FM	+0519+16259	Pacific/Kosrae	Kosrae
 FO	+6201-00646	Atlantic/Faroe
 FR	+4852+00220	Europe/Paris
 GA	+0023+00927	Africa/Lagos
 GB	+513030-0000731	Europe/London
-GD	+1203-06145	America/Puerto_Rico
+GD	+1203-06145	America/Port_of_Spain
 GE	+4143+04449	Asia/Tbilisi
 GF	+0456-05220	America/Cayenne
 GG	+492717-0023210	Europe/London
-GH	+0533-00013	Africa/Abidjan
+GH	+0533-00013	Africa/Accra
 GI	+3608-00521	Europe/Gibraltar
 GL	+6411-05144	America/Nuuk	Greenland (most areas)
 GL	+7646-01840	America/Danmarkshavn	National Park (east coast)
@@ -198,7 +199,7 @@ GL	+7029-02158	America/Scoresbysund	Scoresbysund/Ittoqqortoormiit
 GL	+7634-06847	America/Thule	Thule/Pituffik
 GM	+1328-01639	Africa/Abidjan
 GN	+0931-01343	Africa/Abidjan
-GP	+1614-06132	America/Puerto_Rico
+GP	+1614-06132	America/Port_of_Spain
 GQ	+0345+00847	Africa/Lagos
 GR	+3758+02343	Europe/Athens
 GS	-5416-03632	Atlantic/South_Georgia
@@ -222,7 +223,7 @@ IN	+2232+08822	Asia/Kolkata
 IO	-0720+07225	Indian/Chagos
 IQ	+3321+04425	Asia/Baghdad
 IR	+3540+05126	Asia/Tehran
-IS	+6409-02151	Africa/Abidjan
+IS	+6409-02151	Atlantic/Reykjavik
 IT	+4154+01229	Europe/Rome
 JE	+491101-0020624	Europe/London
 JM	+175805-0764736	America/Jamaica
@@ -235,7 +236,7 @@ KI	+0125+17300	Pacific/Tarawa	Gilbert Islands
 KI	-0247-17143	Pacific/Kanton	Phoenix Islands
 KI	+0152-15720	Pacific/Kiritimati	Line Islands
 KM	-1141+04316	Africa/Nairobi
-KN	+1718-06243	America/Puerto_Rico
+KN	+1718-06243	America/Port_of_Spain
 KP	+3901+12545	Asia/Pyongyang
 KR	+3733+12658	Asia/Seoul
 KW	+2920+04759	Asia/Riyadh
@@ -249,22 +250,22 @@ KZ	+4707+05156	Asia/Atyrau	Atyrau/Atirau/Gur'yev
 KZ	+5113+05121	Asia/Oral	West Kazakhstan
 LA	+1758+10236	Asia/Bangkok
 LB	+3353+03530	Asia/Beirut
-LC	+1401-06100	America/Puerto_Rico
+LC	+1401-06100	America/Port_of_Spain
 LI	+4709+00931	Europe/Zurich
 LK	+0656+07951	Asia/Colombo
 LR	+0618-01047	Africa/Monrovia
 LS	-2928+02730	Africa/Johannesburg
 LT	+5441+02519	Europe/Vilnius
-LU	+4936+00609	Europe/Brussels
+LU	+4936+00609	Europe/Luxembourg
 LV	+5657+02406	Europe/Riga
 LY	+3254+01311	Africa/Tripoli
 MA	+3339-00735	Africa/Casablanca
-MC	+4342+00723	Europe/Paris
+MC	+4342+00723	Europe/Monaco
 MD	+4700+02850	Europe/Chisinau
 ME	+4226+01916	Europe/Belgrade
-MF	+1804-06305	America/Puerto_Rico
+MF	+1804-06305	America/Port_of_Spain
 MG	-1855+04731	Africa/Nairobi
-MH	+0709+17112	Pacific/Tarawa	Marshall Islands (most areas)
+MH	+0709+17112	Pacific/Majuro	Marshall Islands (most areas)
 MH	+0905+16720	Pacific/Kwajalein	Kwajalein
 MK	+4159+02126	Europe/Belgrade
 ML	+1239-00800	Africa/Abidjan
@@ -276,7 +277,7 @@ MO	+221150+1133230	Asia/Macau
 MP	+1512+14545	Pacific/Guam
 MQ	+1436-06105	America/Martinique
 MR	+1806-01557	Africa/Abidjan
-MS	+1643-06213	America/Puerto_Rico
+MS	+1643-06213	America/Port_of_Spain
 MT	+3554+01431	Europe/Malta
 MU	-2010+05730	Indian/Mauritius
 MV	+0410+07330	Indian/Maldives
@@ -292,7 +293,7 @@ MX	+2934-10425	America/Ojinaga	Mountain Time US - Chihuahua (US border)
 MX	+2904-11058	America/Hermosillo	Mountain Standard Time - Sonora
 MX	+3232-11701	America/Tijuana	Pacific Time US - Baja California
 MX	+2048-10515	America/Bahia_Banderas	Central Time - Bahia de Banderas
-MY	+0310+10142	Asia/Singapore	Malaysia (peninsula)
+MY	+0310+10142	Asia/Kuala_Lumpur	Malaysia (peninsula)
 MY	+0133+11020	Asia/Kuching	Sabah, Sarawak
 MZ	-2558+03235	Africa/Maputo
 NA	-2234+01706	Africa/Windhoek
@@ -301,8 +302,8 @@ NE	+1331+00207	Africa/Lagos
 NF	-2903+16758	Pacific/Norfolk
 NG	+0627+00324	Africa/Lagos
 NI	+1209-08617	America/Managua
-NL	+5222+00454	Europe/Brussels
-NO	+5955+01045	Europe/Berlin
+NL	+5222+00454	Europe/Amsterdam
+NO	+5955+01045	Europe/Oslo
 NP	+2743+08519	Asia/Kathmandu
 NR	-0031+16655	Pacific/Nauru
 NU	-1901-16955	Pacific/Niue
@@ -330,7 +331,7 @@ PT	+3744-02540	Atlantic/Azores	Azores
 PW	+0720+13429	Pacific/Palau
 PY	-2516-05740	America/Asuncion
 QA	+2517+05132	Asia/Qatar
-RE	-2052+05528	Asia/Dubai
+RE	-2052+05528	Indian/Reunion
 RO	+4426+02606	Europe/Bucharest
 RS	+4450+02030	Europe/Belgrade
 RU	+5443+02030	Europe/Kaliningrad	MSK-01 - Kaliningrad
@@ -366,13 +367,13 @@ RU	+6445+17729	Asia/Anadyr	MSK+09 - Bering Sea
 RW	-0157+03004	Africa/Maputo
 SA	+2438+04643	Asia/Riyadh
 SB	-0932+16012	Pacific/Guadalcanal
-SC	-0440+05528	Asia/Dubai
+SC	-0440+05528	Indian/Mahe
 SD	+1536+03232	Africa/Khartoum
-SE	+5920+01803	Europe/Berlin
+SE	+5920+01803	Europe/Stockholm
 SG	+0117+10351	Asia/Singapore
 SH	-1555-00542	Africa/Abidjan
 SI	+4603+01431	Europe/Belgrade
-SJ	+7800+01600	Europe/Berlin
+SJ	+7800+01600	Europe/Oslo
 SK	+4809+01707	Europe/Prague
 SL	+0830-01315	Africa/Abidjan
 SM	+4355+01228	Europe/Rome
@@ -382,12 +383,12 @@ SR	+0550-05510	America/Paramaribo
 SS	+0451+03137	Africa/Juba
 ST	+0020+00644	Africa/Sao_Tome
 SV	+1342-08912	America/El_Salvador
-SX	+180305-0630250	America/Puerto_Rico
+SX	+180305-0630250	America/Curacao
 SY	+3330+03618	Asia/Damascus
 SZ	-2618+03106	Africa/Johannesburg
 TC	+2128-07108	America/Grand_Turk
 TD	+1207+01503	Africa/Ndjamena
-TF	-492110+0701303	Indian/Maldives
+TF	-492110+0701303	Indian/Kerguelen
 TG	+0608+00113	Africa/Abidjan
 TH	+1345+10031	Asia/Bangkok
 TJ	+3835+06848	Asia/Dushanbe
@@ -397,8 +398,8 @@ TM	+3757+05823	Asia/Ashgabat
 TN	+3648+01011	Africa/Tunis
 TO	-210800-1751200	Pacific/Tongatapu
 TR	+4101+02858	Europe/Istanbul
-TT	+1039-06131	America/Puerto_Rico
-TV	-0831+17913	Pacific/Tarawa
+TT	+1039-06131	America/Port_of_Spain
+TV	-0831+17913	Pacific/Funafuti
 TW	+2503+12130	Asia/Taipei
 TZ	-0648+03917	Africa/Nairobi
 UA	+5026+03031	Europe/Kiev	Ukraine (most areas)
@@ -406,7 +407,7 @@ UA	+4837+02218	Europe/Uzhgorod	Transcarpathia
 UA	+4750+03510	Europe/Zaporozhye	Zaporozhye and east Lugansk
 UG	+0019+03225	Africa/Nairobi
 UM	+2813-17722	Pacific/Pago_Pago	Midway Islands
-UM	+1917+16637	Pacific/Tarawa	Wake Island
+UM	+1917+16637	Pacific/Wake	Wake Island
 US	+404251-0740023	America/New_York	Eastern (most areas)
 US	+421953-0830245	America/Detroit	Eastern - MI (most areas)
 US	+381515-0854534	America/Kentucky/Louisville	Eastern - KY (Louisville area)
@@ -440,14 +441,14 @@ UY	-345433-0561245	America/Montevideo
 UZ	+3940+06648	Asia/Samarkand	Uzbekistan (west)
 UZ	+4120+06918	Asia/Tashkent	Uzbekistan (east)
 VA	+415408+0122711	Europe/Rome
-VC	+1309-06114	America/Puerto_Rico
+VC	+1309-06114	America/Port_of_Spain
 VE	+1030-06656	America/Caracas
-VG	+1827-06437	America/Puerto_Rico
-VI	+1821-06456	America/Puerto_Rico
+VG	+1827-06437	America/Port_of_Spain
+VI	+1821-06456	America/Port_of_Spain
 VN	+2102+10551	Asia/Bangkok	Vietnam (north)
 VN	+1045+10640	Asia/Ho_Chi_Minh	Vietnam (south)
 VU	-1740+16825	Pacific/Efate
-WF	-1318-17610	Pacific/Tarawa
+WF	-1318-17610	Pacific/Wallis
 WS	-1350-17144	Pacific/Apia
 YE	+1245+04512	Asia/Riyadh
 YT	-1247+04514	Africa/Nairobi
-- 
2.30.2

