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