| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- # Check links in tz tables.
- # Contributed by Paul Eggert. This file is in the public domain.
- BEGIN {
- # Special marker indicating that the name is defined as a Zone.
- # It is a newline so that it cannot match a valid name.
- # It is not null so that its slot does not appear unset.
- Zone = "\n"
- }
- /^Z/ {
- if (defined[$2]) {
- if (defined[$2] == Zone) {
- printf "%s: Zone has duplicate definition\n", $2
- } else {
- printf "%s: Link with same name as Zone\n", $2
- }
- status = 1
- }
- defined[$2] = Zone
- }
- /^L/ {
- if (defined[$3]) {
- if (defined[$3] == Zone) {
- printf "%s: Link with same name as Zone\n", $3
- } else if (defined[$3] == $2) {
- printf "%s: Link has duplicate definition\n", $3
- } else {
- printf "%s: Link to both %s and %s\n", $3, defined[$3], $2
- }
- status = 1
- }
- if (backcheck && FILENAME != backcheck && $3 != "GMT") {
- printf "%s: Link should be in '%s'\n", $3, backcheck
- status = 1
- }
- if ($4 == "#=") {
- shortcut[$5] = $3
- }
- used[$2] = 1
- defined[$3] = $2
- }
- END {
- for (tz in used) {
- if (defined[tz] != Zone) {
- if (!defined[tz]) {
- printf "%s: Link to nowhere\n", tz
- status = 1
- } else if (DATAFORM != "vanguard") {
- printf "%s: Link to link\n", tz
- 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
- }
|