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}
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}