1#!/bin/sh 2# 3# $NetBSD: spell.sh,v 1.2 2005/07/06 08:01:13 wiz Exp $ 4# 5# Taken from: 6# OpenBSD: spell.ksh,v 1.8 2004/02/02 22:36:50 fgsch Exp 7# 8# Converted to sh from ksh by Perry E. Metzger 9# 10# Copyright (c) 2001, 2003 Todd C. Miller <Todd.Miller@courtesan.com> 11# 12# Permission to use, copy, modify, and distribute this software for any 13# purpose with or without fee is hereby granted, provided that the above 14# copyright notice and this permission notice appear in all copies. 15# 16# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23# 24# Sponsored in part by the Defense Advanced Research Projects 25# Agency (DARPA) and Air Force Research Laboratory, Air Force 26# Materiel Command, USAF, under agreement number F39502-99-1-0512. 27# 28SPELLPROG=/usr/libexec/spellprog 29DICT=/usr/share/dict/words 30LOCAL_DICT=/usr/local/share/dict/words 31STOP=/usr/share/dict/stop 32LOCAL_STOP=/usr/local/share/dict/stop 33AMERICAN=/usr/share/dict/american 34BRITISH=/usr/share/dict/british 35LANG=$AMERICAN 36STOP_LANG=$BRITISH 37EXTRA= 38FLAGS= 39DEROFF="deroff -w" 40HISTFILE= 41TMP=`mktemp /tmp/spell.XXXXXXXX` || exit 1 42VTMP= 43USAGE="usage: spell [-biltvx] [-d list] [-h spellhist] [-m a | e | l | m | s]\n\t[-s stop] [+extra_list] [file ...]" 44 45trap "rm -f $TMP $VTMP; exit 0" 0 1 2 15 46 47# Use local word/stop lists if they exist 48if [ -f $LOCAL_DICT ]; then 49 DICT="$DICT $LOCAL_DICT" 50fi 51if [ -f $LOCAL_STOP ]; then 52 STOP="$STOP $LOCAL_STOP" 53fi 54 55while getopts "biltvxd:h:m:s:" c; do 56 case $c in 57 b) LANG=$BRITISH 58 STOP_LANG=$AMERICAN 59 FLAGS="$FLAGS -b" 60 ;; 61 i) DEROFF="$DEROFF -i" 62 ;; 63 l) DEROFF="delatex" 64 ;; 65 m) DEROFF="$DEROFF -m $OPTARG" 66 ;; 67 t) DEROFF="detex" 68 ;; 69 v) VTMP=`mktemp /tmp/spell.XXXXXXXX` || { 70 rm -f $TMP 71 exit 1 72 } 73 FLAGS="$FLAGS -v -o $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 90done 91shift $(( $OPTIND - 1 )) 92 93while test $# -ne 0; do 94 case "$1" in 95 +*) EXTRA="$EXTRA ${1#+}" 96 shift 97 ;; 98 *) break 99 ;; 100 esac 101done 102 103# Any parameters left are files to be checked, pass them to deroff 104DEROFF="$DEROFF $@" 105 106if [ -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 111else 112 $DEROFF | sort -u | $SPELLPROG -o $TMP $STOP $STOP_LANG | \ 113 $SPELLPROG $FLAGS $DICT $LANG $EXTRA | sort -u -k1f - $TMP 114fi 115 116if [ -n "$VTMP" ]; then 117 sort -u -k2f -k1 $VTMP 118fi 119 120exit 0 121