summaryrefslogtreecommitdiffstats
path: root/mantools/check-table-proto
diff options
context:
space:
mode:
Diffstat (limited to 'mantools/check-table-proto')
-rwxr-xr-xmantools/check-table-proto32
1 files changed, 32 insertions, 0 deletions
diff --git a/mantools/check-table-proto b/mantools/check-table-proto
new file mode 100755
index 0000000..8fcb951
--- /dev/null
+++ b/mantools/check-table-proto
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+# Reports database configuration settings without proto/xxx_table documentation
+
+LANG=C; export LANG
+LC_ALL=C; export LC_ALL
+
+trap 'rm -f from-source.tmp from-doc.tmp 2>/dev/null' 0 1 2 3 15
+
+# For each database type, extract parameter names from its postconf
+# include file, and compare the result against a list of names from
+# the corresponding proto/xxx_table file.
+
+# Force a failure if the pcf*suffixes.h files do not exist. Avoid using
+# bash-specific shell features.
+for map in `(ls src/postconf/pcf*suffixes.h || kill $$) |
+ sed 's;src/postconf/pcf_\(.*\)_suffixes.h$;\1;'`
+do
+ # Extract parameter names from source code.
+ tr -cd '[A-zA-z_0-9\12]' < src/postconf/pcf_${map}_suffixes.h |
+ sort > from-source.tmp
+ # Extract parameter names from documentation.
+ sed -n '/^# *\.IP *"*\\fB\([a-zA-Z_0-9][a-zA-Z_0-9]*\).*/{
+ s//\1/
+ p
+ }' proto/${map}_table | sort > from-doc.tmp
+ cmp -s from-source.tmp from-doc.tmp || {
+ echo Settings in global/dict_${map}.c and proto/${map}_table differ.
+ diff from-source.tmp from-doc.tmp
+ }
+done
+