[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.11

1.1       millert     1: #!/bin/ksh -
                      2: #
1.11    ! millert     3: # $OpenBSD: spell.ksh,v 1.10 2007/02/16 13:47:03 jmc Exp $
1.1       millert     4: #
1.7       millert     5: # Copyright (c) 2001, 2003 Todd C. Miller <Todd.Miller@courtesan.com>
1.1       millert     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.6       millert    11: # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
                     12: # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
                     13: # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
                     14: # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
                     15: # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
                     16: # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
                     17: # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1.1       millert    18: #
1.7       millert    19: # Sponsored in part by the Defense Advanced Research Projects
                     20: # Agency (DARPA) and Air Force Research Laboratory, Air Force
                     21: # Materiel Command, USAF, under agreement number F39502-99-1-0512.
                     22: #
1.1       millert    23: SPELLPROG=/usr/libexec/spellprog
                     24: DICT=/usr/share/dict/words
                     25: LOCAL_DICT=/usr/local/share/dict/words
                     26: STOP=/usr/share/dict/stop
                     27: LOCAL_STOP=/usr/local/share/dict/stop
                     28: AMERICAN=/usr/share/dict/american
                     29: BRITISH=/usr/share/dict/british
                     30: LANG=$AMERICAN
                     31: STOP_LANG=$BRITISH
                     32: EXTRA=
                     33: FLAGS=
                     34: DEROFF="deroff -w"
                     35: HISTFILE=
                     36: TMP=`mktemp /tmp/spell.XXXXXXXX` || exit 1
                     37: VTMP=
1.10      jmc        38: USAGE="usage: spell [-biltvx] [-d list] [-h spellhist] [-m a | e | l | m | s]\n\t[-s list] [+extra_list] [file ...]"
1.1       millert    39:
1.7       millert    40: set -o posix           # set POSIX mode to prevent +foo in getopts
                     41: OPTIND=1               # force getopts to reset itself
                     42:
1.8       fgsch      43: trap "rm -f $TMP $VTMP; exit 0" 0 1 2 15
1.1       millert    44:
                     45: # Use local word/stop lists if they exist
                     46: if [ -f $LOCAL_DICT ]; then
                     47:        DICT="$DICT $LOCAL_DICT"
                     48: fi
                     49: if [ -f $LOCAL_STOP ]; then
                     50:        STOP="$STOP $LOCAL_STOP"
                     51: fi
                     52:
1.7       millert    53: while getopts "biltvxd:h:m:s:" c; do
1.1       millert    54:        case $c in
                     55:        b)      LANG=$BRITISH
                     56:                STOP_LANG=$AMERICAN
                     57:                FLAGS[${#FLAGS[@]}]="-b"
                     58:                ;;
                     59:        i)      DEROFF="$DEROFF -i"
                     60:                ;;
1.3       margarid   61:        l)      DEROFF="delatex"
1.2       millert    62:                ;;
                     63:        m)      DEROFF="$DEROFF -m $OPTARG"
1.1       millert    64:                ;;
1.11    ! millert    65:        t)      DEROFF="detex -w"
1.1       millert    66:                ;;
1.4       pvalchev   67:        v)      VTMP=`mktemp /tmp/spell.XXXXXXXX` || {
                     68:                        rm -f ${TMP}
                     69:                        exit 1
                     70:                }
1.1       millert    71:                FLAGS[${#FLAGS[@]}]="-v"
                     72:                FLAGS[${#FLAGS[@]}]="-o"
                     73:                FLAGS[${#FLAGS[@]}]="$VTMP"
                     74:                ;;
                     75:        x)      FLAGS[${#FLAGS[@]}]="-x"
                     76:                ;;
                     77:        d)      DICT="$OPTARG"
                     78:                LANG=
                     79:                ;;
                     80:        s)      STOP="$OPTARG"
                     81:                STOP_LANG=
                     82:                LOCAL_STOP=
                     83:                ;;
                     84:        h)      HISTFILE="$OPTARG"
                     85:                ;;
                     86:        *)      echo "$USAGE" 1>&2
                     87:                exit 1
                     88:                ;;
                     89:        esac
                     90: done
                     91: shift $(( $OPTIND - 1 ))
                     92:
                     93: while test $# -ne 0; do
                     94:        case "$1" in
                     95:                +*)     EXTRA="$EXTRA ${1#+}"
                     96:                        shift
                     97:                        ;;
                     98:                *)      break
                     99:                        ;;
                    100:        esac
                    101: done
                    102:
                    103: # Any parameters left are files to be checked, pass them to deroff
                    104: DEROFF="$DEROFF $@"
                    105:
                    106: if [ -n "$HISTFILE" ]; then
                    107:        $DEROFF | sort -u | $SPELLPROG -o $TMP $STOP $STOP_LANG | \
                    108:            $SPELLPROG ${FLAGS[*]} $DICT $LANG $EXTRA | sort -u -k1f - $TMP | \
                    109:            tee -a $HISTFILE
                    110:        who -m >> $HISTFILE
                    111: else
                    112:        $DEROFF | sort -u | $SPELLPROG -o $TMP $STOP $STOP_LANG | \
                    113:            $SPELLPROG ${FLAGS[*]} $DICT $LANG $EXTRA | sort -u -k1f - $TMP
                    114: fi
                    115:
                    116: if [ -n "$VTMP" ]; then
                    117:        sort -u -k2f -k1 $VTMP
                    118: fi
                    119:
                    120: exit 0