home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 March B / SCO_CASTOR4RRT.iso / cmds / root.3 / usr / bin / spell / spell~
Text File  |  1998-08-19  |  3KB  |  100 lines

  1. #!/sbin/sh
  2.  
  3. # Copyright (c) 1998 The Santa Cruz Operation, Inc.. All Rights Reserved. 
  4. #                                                                         
  5. #        THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF THE               
  6. #                   SANTA CRUZ OPERATION INC.                             
  7. #                                                                         
  8. #   The copyright notice above does not evidence any actual or intended   
  9. #   publication of such source code.                                      
  10.  
  11. #ident    "@(#)spell:spell.sh    1.11.2.5"
  12. #    copyright    "%c%"
  13.  
  14.  
  15. #    spell program
  16. # B_SPELL flags, D_SPELL dictionary, F_SPELL input files, H_SPELL history, S_SPELL stop, V_SPELL data for -v
  17. # L_SPELL sed script, I_SPELL -i option to deroff
  18.  
  19. # Check for MAC, setting H_SPELL accordingly
  20.  
  21. if [ ! -w "/var/adm/spellhist" ]
  22. then
  23.   H_SPELL=/dev/null
  24. else
  25.     H_SPELL=${H_SPELL-/var/adm/spellhist}
  26. fi
  27.  
  28. EXIT_CODE=0
  29. OPTS_DONE=false
  30. V_SPELL=/dev/null
  31. F_SPELL=
  32. B_SPELL=
  33. L_SPELL="sed -e \"/^[.'].*[.'][     ]*nx[     ]*\/usr\/lib/d\" -e \"/^[.'].*[.'][     ]*so[     ]*\/usr\/lib/d\" -e \"/^[.'][     ]*so[     ]*\/usr\/lib/d\" -e \"/^[.'][     ]*nx[     ]*\/usr\/lib/d\" "
  34. USAGE="usage:\n\tspell [-v] [-b] [-x] [-l] [-i] [+local_file] [ files ]\n"
  35. trap "rm -f /tmp/spell.$$; exit \$EXIT_CODE" 0 1 2 13 15
  36. for A in $*
  37. do
  38.     if $OPTS_DONE
  39.     then
  40.         F_SPELL="$F_SPELL $A"
  41.     else
  42.     case $A in
  43.     -v)    if /bin/pdp11
  44.         then    pfmt -l UX:spell -s error \
  45.                  -g "uxspell:1" "-v option not supported on pdp11\n"
  46.             EXIT_CODE=1
  47.             EXIT_SPELL=exit
  48.         else    B_SPELL="$B_SPELL -v"
  49.             V_SPELL=/tmp/spell.$$
  50.         fi ;;
  51.     -a)    : ;;
  52.     -b)     D_SPELL=${D_SPELL-/usr/share/lib/spell/hlistb}
  53.         B_SPELL="$B_SPELL -b" ;;
  54.     -x)    B_SPELL="$B_SPELL -x" ;;
  55.     -l)    L_SPELL="cat" ;;
  56.     +*)    if [ "$FIRSTPLUS" = "+" ]
  57.         then    pfmt -l UX:spell -s warn -g "uxspell:2" \
  58.                 "multiple + options in spell, all but the last are ignored\n"
  59.             EXIT_CODE=2;
  60.         fi;
  61.         FIRSTPLUS="$FIRSTPLUS"+
  62.         if  LOCAL=`expr $A : '+\(.*\)' 2>/dev/null`;
  63.         then if test ! -r $LOCAL;
  64.              then pfmt -l UX:spell -s error \
  65.                    -g "uxspell:3" "spell cannot read %s\n" $LOCAL
  66.               EXIT_CODE=1
  67.               EXIT_SPELL=exit;
  68.              fi
  69.         else
  70.              pfmt -l UX:spell -s error \
  71.             -g "uxspell:4" "spell cannot identify local spell file\n"
  72.              EXIT_CODE=1
  73.              EXIT_SPELL=exit;
  74.         fi ;;
  75.     -i)    I_SPELL="-i" ;;
  76.     --)    OPTS_DONE=true ;;
  77.     -*)    pfmt -l UX:spell -s error -g "uxspell:5" "Invalid option: %s\n" $A
  78.         pfmt -l UX:spell -s action -g "uxspell:6" "$USAGE"
  79.         EXIT_CODE=1
  80.         exit ;;
  81.     *)    F_SPELL="$F_SPELL $A"
  82.         OPTS_DONE=true ;;
  83.     esac
  84.     fi
  85. done
  86. ${EXIT_SPELL-:}
  87. ( MSGOFF=ls export MSGOFF
  88.  cat -- $F_SPELL | eval "$L_SPELL" |\
  89.  deroff -w $I_SPELL |\
  90.  sort -u +0 |\
  91.  /usr/lib/spell/spellprog ${S_SPELL-/usr/share/lib/spell/hstop} 1 |\
  92.  /usr/lib/spell/spellprog ${D_SPELL-/usr/share/lib/spell/hlista} $V_SPELL $B_SPELL |\
  93.  comm -23 - ${LOCAL-/dev/null} |\
  94.  tee -a $H_SPELL )
  95. ( who am i >>$H_SPELL ) 2>/dev/null
  96. case $V_SPELL in
  97. /dev/null)    exit
  98. esac
  99. sed '/^\./d' $V_SPELL | sort -u +1f +0
  100.