Home | History | Annotate | Line # | Download | only in dist
checklinks.awk revision 1.1.1.1.2.3.4.1
      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.3.4.1  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.3.4.1  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