1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
#!/bin/sh
# This script extracts and compares the commands defined in the manual
# to those defined in the source code.
grep '^DEF_CMD' $1/../*/*cmd.def \
| sed -e 's/\\\\/\\/' \
| sed -e 's:^.*/\([^/]*\)cmd\.def[^(]*(\([^,]*\), "\([^"]*\)".*$:\2 \3 =\1:' \
| sed -e "s/C('\(.\)')/C-\1/" -e "s/ *'\(.\)' /\1/" -e 's/ 0 /0/' \
| sed -e "s/^ /' ' /" \
| grep -v '0 D' \
| sort | uniq >src.cmds
# Join all @item lines with their following lines.
cat $1/../doc/commands.texi \
| sed -e 's/^@item \(.*\)$/@item \1 EOL/' \
| sed -e '/^@item /{N;s/EOL.//;P;D;}' \
| sed -e '/^@item /s/$/ =/' \
>joined.txt
cat $1/../doc/mac-*sect.texi \
| sed -e 's/^@item \(.*\)$/@item \1 EOL/' \
| sed -e '/^@item /{N;s/EOL.//;P;D;}' \
| sed -e '/^@item /s/$/ =mac/' \
>>joined.txt
cat $1/../doc/x11-*sect.texi \
| sed -e 's/^@item \(.*\)$/@item \1 EOL/' \
| sed -e '/^@item /{N;s/EOL.//;P;D;}' \
| sed -e '/^@item /s/$/ =x/' \
>>joined.txt
cat $1/../doc/curses-*sect.texi \
| sed -e 's/^@item \(.*\)$/@item \1 EOL/' \
| sed -e '/^@item /{N;s/EOL.//;P;D;}' \
| sed -e '/^@item /s/$/ =c/' \
>>joined.txt
# Single-letter commands.
cat joined.txt \
| grep -h "^@item [^'] " \
| sed -e 's/^@item \(.\) (@code{\([^}]*\)})[^=]*\(=.*\)$/\1 \2 \3/' \
>doc.cmds1
# Escaped single-letter commands.
cat joined.txt \
| grep -h "^@item @. " \
| sed -e 's/^@item @\(.\) (@code{\([^}]*\)})[^=]*\(=.*\)$/\1 \2 \3/' \
>doc.cmds2
# Quoted single-letter commands.
cat joined.txt \
| grep -h "^@item \'.\' " \
| sed -e "s/^@item '\(.\)' (@code{\([^}]*\)})[^=]*\(=.*\)$/'\1' \2 \3/" \
>doc.cmds3
# Control-character commands.
cat joined.txt \
| grep -h "^@item ^. " \
| sed -e 's/^@item ^\(.\) (@code{\([^}]*\)})[^=]*\(=.*\)$/C-\1 \2 \3/' \
>doc.cmds4
# Long-name-only commands.
cat joined.txt \
| grep -h "^@item @code{[^C ]" \
| sed -e 's/@@/@/' \
| sed -e 's/^@item @code{\([^C ][^}]*\)}[^=]*\(=.*\)$/0 \1 \2/' \
> doc.cmds5
cat doc.cmds[1-5] | grep -v '0 D' | sort | uniq >doc.cmds
echo "Differences between commands in reference manual and in source code:"
echo "('<' - in documentation, '>' - in sources)"
diff -w doc.cmds src.cmds
exit 0
|