[BACK]Return to spell.ksh CVS log [TXT][DIR] Up to [local] / src / usr.bin / spell

Annotation of src/usr.bin/spell/spell.ksh, Revision 1.5

1.1       millert     1: #!/bin/ksh -
                      2: #
1.5     ! millert     3: # $OpenBSD: spell.ksh,v 1.4 2003/02/08 10:19:30 pvalchev Exp $
1.1       millert     4: #
                      5: # Copyright (c) 2001 Todd C. Miller <Todd.Miller@courtesan.com>
                      6: #
1.5     ! millert     7: # Permission to use, copy, modify, and distribute this software for any
        !             8: # purpose with or without fee is hereby granted, provided that the above
        !             9: # copyright notice and this permission notice appear in all copies.
1.1       millert    10: #
1.5     ! millert    11: # THE SOFTWARE IS PROVIDED "AS IS" AND TODD C. MILLER DISCLAIMS ALL
        !            12: # WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
        !            13: # OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL TODD C. MILLER BE LIABLE
        !            14: # FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
        !            15: # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
        !            16: # OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
        !            17: # CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1.1       millert    18: #
                     19: SPELLPROG=/usr/libexec/spellprog
                     20: DICT=/usr/share/dict/words
                     21: LOCAL_DICT=/usr/local/share/dict/words
                     22: STOP=/usr/share/dict/stop
                     23: LOCAL_STOP=/usr/local/share/dict/stop
                     24: AMERICAN=/usr/share/dict/american
                     25: BRITISH=/usr/share/dict/british
                     26: LANG=$AMERICAN
                     27: STOP_LANG=$BRITISH
                     28: EXTRA=
                     29: FLAGS=
                     30: DEROFF="deroff -w"
                     31: HISTFILE=
                     32: TMP=`mktemp /tmp/spell.XXXXXXXX` || exit 1
                     33: VTMP=
                     34: USAGE="usage: spell [-biltvx] [-d list] [-h spellhist] [-s stop] [+extra_list] [file ...]"
                     35:
                     36: trap "rm -f $TMP $VTMP; exit 0" 0
                     37:
                     38: # Use local word/stop lists if they exist
                     39: if [ -f $LOCAL_DICT ]; then
                     40:        DICT="$DICT $LOCAL_DICT"
                     41: fi
                     42: if [ -f $LOCAL_STOP ]; then
                     43:        STOP="$STOP $LOCAL_STOP"
                     44: fi
                     45:
                     46: # getopts will treat +foo the same as -foo so we have to make a copy
                     47: # of the args and quit the loop when we find something starting with '+'
                     48: set -A argv $0 "$@"
                     49: while test "${argv[$OPTIND]#+}" = "${argv[$OPTIND]}" && \
1.2       millert    50:     getopts "biltvxd:h:m:s:" c; do
1.1       millert    51:        case $c in
                     52:        b)      LANG=$BRITISH
                     53:                STOP_LANG=$AMERICAN
                     54:                FLAGS[${#FLAGS[@]}]="-b"
                     55:                ;;
                     56:        i)      DEROFF="$DEROFF -i"
                     57:                ;;
1.3       margarid   58:        l)      DEROFF="delatex"
1.2       millert    59:                ;;
                     60:        m)      DEROFF="$DEROFF -m $OPTARG"
1.1       millert    61:                ;;
                     62:        t)      DEROFF="detex"
                     63:                ;;
1.4       pvalchev   64:        v)      VTMP=`mktemp /tmp/spell.XXXXXXXX` || {
                     65:                        rm -f ${TMP}
                     66:                        exit 1
                     67:                }
1.1       millert    68:                FLAGS[${#FLAGS[@]}]="-v"
                     69:                FLAGS[${#FLAGS[@]}]="-o"
                     70:                FLAGS[${#FLAGS[@]}]="$VTMP"
                     71:                ;;
                     72:        x)      FLAGS[${#FLAGS[@]}]="-x"
                     73:                ;;
                     74:        d)      DICT="$OPTARG"
                     75:                LANG=
                     76:                ;;
                     77:        s)      STOP="$OPTARG"
                     78:                STOP_LANG=
                     79:                LOCAL_STOP=
                     80:                ;;
                     81:        h)      HISTFILE="$OPTARG"
                     82:                ;;
                     83:        *)      echo "$USAGE" 1>&2
                     84:                exit 1
                     85:                ;;
                     86:        esac
                     87: done
                     88: shift $(( $OPTIND - 1 ))
                     89:
                     90: while test $# -ne 0; do
                     91:        case "$1" in
                     92:                +*)     EXTRA="$EXTRA ${1#+}"
                     93:                        shift
                     94:                        ;;
                     95:                *)      break
                     96:                        ;;
                     97:        esac
                     98: done
                     99:
                    100: # Any parameters left are files to be checked, pass them to deroff
                    101: DEROFF="$DEROFF $@"
                    102:
                    103: if [ -n "$HISTFILE" ]; then
                    104:        $DEROFF | sort -u | $SPELLPROG -o $TMP $STOP $STOP_LANG | \
                    105:            $SPELLPROG ${FLAGS[*]} $DICT $LANG $EXTRA | sort -u -k1f - $TMP | \
                    106:            tee -a $HISTFILE
                    107:        who -m >> $HISTFILE
                    108: else
                    109:        $DEROFF | sort -u | $SPELLPROG -o $TMP $STOP $STOP_LANG | \
                    110:            $SPELLPROG ${FLAGS[*]} $DICT $LANG $EXTRA | sort -u -k1f - $TMP
                    111: fi
                    112:
                    113: if [ -n "$VTMP" ]; then
                    114:        sort -u -k2f -k1 $VTMP
                    115: fi
                    116:
                    117: exit 0