diff options
Diffstat (limited to 'mantools/check-table-proto')
-rwxr-xr-x | mantools/check-table-proto | 32 |
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 + |