1# Check links in tz tables. 2 3# Contributed by Paul Eggert. This file is in the public domain. 4 5BEGIN { 6 # Special marker indicating that the name is defined as a Zone. 7 # It is a newline so that it cannot match a valid name. 8 # It is not null so that its slot does not appear unset. 9 Zone = "\n" 10} 11 12/^Z/ { 13 if (defined[$2]) { 14 if (defined[$2] == Zone) { 15 printf "%s: Zone has duplicate definition\n", $2 16 } else { 17 printf "%s: Link with same name as Zone\n", $2 18 } 19 status = 1 20 } 21 defined[$2] = Zone 22} 23 24/^L/ { 25 if (defined[$3]) { 26 if (defined[$3] == Zone) { 27 printf "%s: Link with same name as Zone\n", $3 28 } else if (defined[$3] == $2) { 29 printf "%s: Link has duplicate definition\n", $3 30 } else { 31 printf "%s: Link to both %s and %s\n", $3, defined[$3], $2 32 } 33 status = 1 34 } 35 used[$2] = 1 36 defined[$3] = $2 37} 38 39END { 40 for (tz in used) { 41 if (defined[tz] != Zone) { 42 printf "%s: Link to non-zone\n", tz 43 status = 1 44 } 45 } 46 47 exit status 48} 49