summaryrefslogtreecommitdiffstats
path: root/checknow.awk
diff options
context:
space:
mode:
Diffstat (limited to 'checknow.awk')
-rw-r--r--checknow.awk54
1 files changed, 54 insertions, 0 deletions
diff --git a/checknow.awk b/checknow.awk
new file mode 100644
index 0000000..57ff3c0
--- /dev/null
+++ b/checknow.awk
@@ -0,0 +1,54 @@
+# Check zonenow.tab for consistency with primary data.
+
+# Contributed by Paul Eggert. This file is in the public domain.
+
+function record_zone(zone, data) {
+ if (zone) {
+ zone_data[zone] = data
+ zones[data] = zones[data] " " zone
+ }
+}
+
+BEGIN {
+ while (getline <zdump_table) {
+ if ($0 ~ /^TZ/) {
+ record_zone(zone, data)
+ zone = $0
+ sub(/.*\.dir\//, "", zone)
+ sub(/\/\//, "/", zone)
+ sub(/"/, "", zone)
+ data = ""
+ } else if ($0 ~ /./)
+ data = data $0 "\n"
+ }
+ record_zone(zone, data)
+ FS = "\t"
+}
+
+/^[^#]/ {
+ zone = $3
+ data = zone_data[zone]
+ if (!data) {
+ printf "%s: no data\n", zone
+ status = 1
+ } else {
+ zone2 = zonenow[data]
+ if (zone2) {
+ printf "zones %s and %s identical from now on\n", zone, zone2
+ status = 1
+ } else
+ zonenow[data] = zone
+ }
+}
+
+END {
+ for (zone in zone_data) {
+ data = zone_data[zone]
+ if (!zonenow[data]) {
+ printf "zonenow.tab should have one of:%s\n", zones[data]
+ zonenow[data] = zone # This suppresses duplicate diagnostics.
+ status = 1
+ }
+ }
+ exit status
+}