* backward: Add comments for shortcut links. * checklinks.awk: Check these links. --- backward | 34 ++++++++++++++++++++++------------ checklinks.awk | 13 +++++++++++++ 2 files changed, 35 insertions(+), 12 deletions(-) diff --git a/backward b/backward index f61c260..b2ccbc1 100644 --- a/backward +++ b/backward @@ -16,11 +16,21 @@ # This file is divided into sections, one for each major reason for a # backward compatibility link. Each section is sorted by link name. +# A "#= TARGET1" comment labels each link inserted only because some +# .zi parsers mishandle links to links. The comment says what the +# target would be if these parsers were fixed so that data could +# contain links to links. For example, the line +# "Link Australia/Sydney Australia/ACT #= Australia/Canberra" would be +# "Link Australia/Canberra Australia/ACT" were it not that data lines +# refrain from linking to links like Australia/Canberra, which means +# the Australia/ACT line links instead to Australia/Sydney, +# Australia/Canberra's target. + # Pre-1993 naming conventions -# Link TARGET LINK-NAME -Link Australia/Sydney Australia/ACT +# Link TARGET LINK-NAME #= TARGET1 +Link Australia/Sydney Australia/ACT #= Australia/Canberra Link Australia/Lord_Howe Australia/LHI Link Australia/Sydney Australia/NSW Link Australia/Darwin Australia/North @@ -30,7 +40,7 @@ Link Australia/Hobart Australia/Tasmania Link Australia/Melbourne Australia/Victoria Link Australia/Perth Australia/West Link Australia/Broken_Hill Australia/Yancowinna -Link America/Rio_Branco Brazil/Acre +Link America/Rio_Branco Brazil/Acre #= America/Porto_Acre Link America/Noronha Brazil/DeNoronha Link America/Sao_Paulo Brazil/East Link America/Manaus Brazil/West @@ -79,7 +89,7 @@ Link Etc/GMT GMT0 Link Etc/GMT Greenwich # End of rearguard section. Link Asia/Hong_Kong Hongkong -Link Africa/Abidjan Iceland +Link Africa/Abidjan Iceland #= Atlantic/Reykjavik Link Asia/Tehran Iran Link Asia/Jerusalem Israel Link America/Jamaica Jamaica @@ -91,7 +101,7 @@ Link America/Mazatlan Mexico/BajaSur Link America/Mexico_City Mexico/General Link Pacific/Auckland NZ Link Pacific/Chatham NZ-CHAT -Link America/Denver Navajo +Link America/Denver Navajo #= America/Shiprock Link Asia/Shanghai PRC Link Europe/Warsaw Poland Link Europe/Lisbon Portugal @@ -120,7 +130,7 @@ Link Etc/UTC Zulu # Two-part names that were renamed mostly to three-part names in 1995 -# Link TARGET LINK-NAME +# Link TARGET LINK-NAME #= TARGET1 Link America/Argentina/Buenos_Aires America/Buenos_Aires Link America/Argentina/Catamarca America/Catamarca Link America/Argentina/Cordoba America/Cordoba @@ -129,7 +139,7 @@ Link America/Argentina/Jujuy America/Jujuy Link America/Indiana/Knox America/Knox_IN Link America/Kentucky/Louisville America/Louisville Link America/Argentina/Mendoza America/Mendoza -Link America/Puerto_Rico America/Virgin +Link America/Puerto_Rico America/Virgin #= America/St_Thomas Link Pacific/Pago_Pago Pacific/Samoa @@ -279,12 +289,12 @@ Link Pacific/Port_Moresby Pacific/Yap # Alternate names for the same location -# Link TARGET LINK-NAME -Link Africa/Nairobi Africa/Asmera +# Link TARGET LINK-NAME #= TARGET1 +Link Africa/Nairobi Africa/Asmera #= Africa/Asmara Link America/Nuuk America/Godthab Link Asia/Ashgabat Asia/Ashkhabad Link Asia/Kolkata Asia/Calcutta -Link Asia/Shanghai Asia/Chungking +Link Asia/Shanghai Asia/Chungking #= Asia/Chongqing Link Asia/Dhaka Asia/Dacca # Istanbul is in both continents. Link Europe/Istanbul Asia/Istanbul @@ -300,5 +310,5 @@ Link Europe/Kyiv Europe/Kiev # Classically, Cyprus is in Asia; e.g. see Herodotus, Histories, I.72. # However, for various reasons many users expect to find it under Europe. Link Asia/Nicosia Europe/Nicosia -Link Pacific/Guadalcanal Pacific/Ponape -Link Pacific/Port_Moresby Pacific/Truk +Link Pacific/Guadalcanal Pacific/Ponape #= Pacific/Pohnpei +Link Pacific/Port_Moresby Pacific/Truk #= Pacific/Chuuk diff --git a/checklinks.awk b/checklinks.awk index b2bb17a..6e4fda8 100644 --- a/checklinks.awk +++ b/checklinks.awk @@ -36,6 +36,9 @@ BEGIN { printf "%s: Link should be in '%s'\n", $3, backcheck status = 1 } + if ($4 == "#=") { + shortcut[$5] = $3 + } used[$2] = 1 defined[$3] = $2 } @@ -47,6 +50,16 @@ END { status = 1 } } + for (tz in shortcut) { + if (defined[shortcut[tz]] != defined[tz]) { + target = (!defined[tz] ? "absence" \ + : defined[tz] == "\n" ? "zone" \ + : defined[tz]) + printf "%s: target %s disagrees with %s's target %s\n", \ + tz, target, shortcut[tz], defined[shortcut[tz]] + status = 1 + } + } exit status } -- 2.37.3