14616d0f9Sopenharmony_ci# Check zonenow.tab for consistency with primary data.
24616d0f9Sopenharmony_ci
34616d0f9Sopenharmony_ci# Contributed by Paul Eggert.  This file is in the public domain.
44616d0f9Sopenharmony_ci
54616d0f9Sopenharmony_cifunction record_zone(zone, data) {
64616d0f9Sopenharmony_ci  if (zone) {
74616d0f9Sopenharmony_ci    zone_data[zone] = data
84616d0f9Sopenharmony_ci    zones[data] = zones[data] " " zone
94616d0f9Sopenharmony_ci  }
104616d0f9Sopenharmony_ci}
114616d0f9Sopenharmony_ci
124616d0f9Sopenharmony_ciBEGIN {
134616d0f9Sopenharmony_ci  while (getline <zdump_table) {
144616d0f9Sopenharmony_ci    if ($0 ~ /^TZ/) {
154616d0f9Sopenharmony_ci      record_zone(zone, data)
164616d0f9Sopenharmony_ci      zone = $0
174616d0f9Sopenharmony_ci      sub(/.*\.dir\//, "", zone)
184616d0f9Sopenharmony_ci      sub(/\/\//, "/", zone)
194616d0f9Sopenharmony_ci      sub(/"/, "", zone)
204616d0f9Sopenharmony_ci      data = ""
214616d0f9Sopenharmony_ci    } else if ($0 ~ /./)
224616d0f9Sopenharmony_ci      data = data $0 "\n"
234616d0f9Sopenharmony_ci  }
244616d0f9Sopenharmony_ci  record_zone(zone, data)
254616d0f9Sopenharmony_ci  FS = "\t"
264616d0f9Sopenharmony_ci}
274616d0f9Sopenharmony_ci
284616d0f9Sopenharmony_ci/^[^#]/ {
294616d0f9Sopenharmony_ci  zone = $3
304616d0f9Sopenharmony_ci  data = zone_data[zone]
314616d0f9Sopenharmony_ci  if (!data) {
324616d0f9Sopenharmony_ci    printf "%s: no data\n", zone
334616d0f9Sopenharmony_ci    status = 1
344616d0f9Sopenharmony_ci  } else {
354616d0f9Sopenharmony_ci    zone2 = zonenow[data]
364616d0f9Sopenharmony_ci    if (zone2) {
374616d0f9Sopenharmony_ci      printf "zones %s and %s identical from now on\n", zone, zone2
384616d0f9Sopenharmony_ci      status = 1
394616d0f9Sopenharmony_ci    } else
404616d0f9Sopenharmony_ci      zonenow[data] = zone
414616d0f9Sopenharmony_ci  }
424616d0f9Sopenharmony_ci}
434616d0f9Sopenharmony_ci
444616d0f9Sopenharmony_ciEND {
454616d0f9Sopenharmony_ci for (zone in zone_data) {
464616d0f9Sopenharmony_ci    data = zone_data[zone]
474616d0f9Sopenharmony_ci    if (!zonenow[data]) {
484616d0f9Sopenharmony_ci      printf "zonenow.tab should have one of:%s\n", zones[data]
494616d0f9Sopenharmony_ci      zonenow[data] = zone # This suppresses duplicate diagnostics.
504616d0f9Sopenharmony_ci      status = 1
514616d0f9Sopenharmony_ci    }
524616d0f9Sopenharmony_ci }
534616d0f9Sopenharmony_ci exit status
544616d0f9Sopenharmony_ci}
55