#!/bin/sh - # # Check spelling in comments and quoted strings from the source files. t=__wt.$$ trap 'rm -f $t' 0 1 2 3 13 15 # Insulate against locale-specific sort order LC_ALL=C export LC_ALL # If aspell has not been installed, quit type aspell > /dev/null 2>&1 || { echo 'skipped: aspell not found' exit 0 } # replace: # Create a replacement list of spelling words. This is here because the # words we ignore changes over time and it's worth periodically collapsing # the list. Don't it too often, the list is correct for many different aspell # catalogs and generating a shorter list on any single system will break other # systems. replace() { aspell --mode=ccpp --lang=en_US list < ../$1 | sort -u | comm -12 /dev/stdin s_string.ok } # check: # Check the spelling of an individual file. check() { # Strip out git hashes, which are seven character hex strings. # Strip out double quote char literals ('"'), they confuse aspell. sed -e 's/ [0-9a-f]\{7\} / /g' -e "s/'\"'//g" ../$2 | aspell --lang=en_US $1 list | sort -u | comm -23 /dev/stdin s_string.ok > $t test -s $t && { echo "==== $2" cat $t } } # List of files to spellchk. l=`(cd .. && find bench examples ext src test -name '*.[chsy]' && find src -name '*.in')` usage() { echo 'usage: s_string [-r]' >&2 exit 1 } while : do case "$1" in -r) # -r builds replacement list of OK words for f in $l; do replace $f done | sort -u > $t cp $t s_string.ok shift;; *) test "$#" -eq 0 || usage break;; esac done # Check source files. for f in $l; do check "--mode=ccpp" $f done l="NEWS" # Check other files. for f in $l; do check "" $f done exit 0