diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2014-11-17 11:31:40 -0800 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2014-11-17 11:31:40 -0800 |
commit | 2dc5286b289a8f6dc462951d2331f4e2fee5dfcb (patch) | |
tree | f4cb4b380a6f48d8addb939998421b266815d050 | |
parent | da5a36565cc62083b50656e86c6f8af42199ad8e (diff) | |
download | tz-2dc5286b289a8f6dc462951d2331f4e2fee5dfcb.tar.gz |
Check for links to links.
This problem has come up before, and it's time to add a check to
catch this common error.
* Makefile (AWK_SCRIPTS): Add checklinks.awk.
(check, .PHONY): Add check_links.
(check_links): New rule.
* checklinks.awk: New file.
-rw-r--r-- | Makefile | 10 | ||||
-rw-r--r-- | checklinks.awk | 19 |
2 files changed, 26 insertions, 3 deletions
@@ -359,7 +359,7 @@ TABDATA= iso3166.tab leapseconds $(ZONETABLES) LEAP_DEPS= leapseconds.awk leap-seconds.list DATA= $(YDATA) $(NDATA) backzone $(TABDATA) \ leap-seconds.list yearistype.sh -AWK_SCRIPTS= checktab.awk leapseconds.awk +AWK_SCRIPTS= checklinks.awk checktab.awk leapseconds.awk MISC= $(AWK_SCRIPTS) zoneinfo2tdf.pl ENCHILADA= $(COMMON) $(DOCS) $(SOURCES) $(DATA) $(MISC) @@ -468,7 +468,7 @@ tzselect: tzselect.ksh <$? >$@ chmod +x $@ -check: check_character_set check_white_space check_sorted \ +check: check_character_set check_white_space check_links check_sorted \ check_tables check_web check_character_set: $(ENCHILADA) @@ -500,6 +500,9 @@ check_sorted: backward backzone iso3166.tab zone.tab zone1970.tab $(AWK) '/^[^#]/ $(CHECK_CC_LIST)' zone1970.tab | \ LC_ALL=C sort -cu +check_links: checklinks.awk $(TDATA) + $(AWK) -f checklinks.awk $(TDATA) + check_tables: checktab.awk $(PRIMARY_YDATA) $(ZONETABLES) for tab in $(ZONETABLES); do \ $(AWK) -f checktab.awk -v zone_table=$$tab $(PRIMARY_YDATA) \ @@ -662,7 +665,8 @@ zic.o: private.h tzfile.h version.h .KEEP_STATE: .PHONY: ALL INSTALL all -.PHONY: check check_character_set check_public check_sorted check_tables +.PHONY: check check_character_set check_links +.PHONY: check_public check_sorted check_tables .PHONY: check_time_t_alternatives check_web check_white_space clean clean_misc .PHONY: install maintainer-clean names posix_packrat posix_only posix_right .PHONY: public right_only right_posix signatures tarballs typecheck diff --git a/checklinks.awk b/checklinks.awk new file mode 100644 index 0000000..f57f736 --- /dev/null +++ b/checklinks.awk @@ -0,0 +1,19 @@ +# Check links in tz tables. + +# Contributed by Paul Eggert. + +/^Link/ { used[$2] = 1 } +/^Zone/ { defined[$2] = 1 } + +END { + status = 0 + + for (tz in used) { + if (!defined[tz]) { + printf "%s: Link to non-zone\n", tz + status = 1 + } + } + + exit status +} |