(linenum→info "unix/slp.c:2238")

bsd-games/2.17/countmail/countmail

    1: #!/bin/sh
    2: #       $NetBSD: countmail,v 1.5 2002/07/02 17:18:21 mycroft Exp $
    3: 
    4: #
    5: # Copyright (c) 1998, 2002 The NetBSD Foundation, Inc.
    6: # All rights reserved.
    7: #
    8: # This code is derived from software contributed to The NetBSD Foundation
    9: # by Charles M. Hannum.
   10: #
   11: # Redistribution and use in source and binary forms, with or without
   12: # modification, are permitted provided that the following conditions
   13: # are met:
   14: # 1. Redistributions of source code must retain the above copyright
   15: #    notice, this list of conditions and the following disclaimer.
   16: # 2. Redistributions in binary form must reproduce the above copyright
   17: #    notice, this list of conditions and the following disclaimer in the
   18: #    documentation and/or other materials provided with the distribution.
   19: # 3. All advertising materials mentioning features or use of this software
   20: #    must display the following acknowledgement:
   21: #        This product includes software developed by the NetBSD
   22: #        Foundation, Inc. and its contributors.
   23: # 4. Neither the name of The NetBSD Foundation nor the names of its
   24: #    contributors may be used to endorse or promote products derived
   25: #    from this software without specific prior written permission.
   26: #
   27: # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
   28: # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
   29: # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
   30: # PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
   31: # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
   32: # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
   33: # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
   34: # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
   35: # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   36: # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   37: # POSSIBILITY OF SUCH DAMAGE.
   38: #
   39: 
   40: # Count the messages in your mailbox, using only POSIX shell builtins.
   41: #
   42: # Caveats:
   43: #
   44: # The read loop is horrendously slow on every implementation I've
   45: # tried.  I suggest using from(1) and wc(1) instead, though these are
   46: # not shell builtins.
   47: 
   48: # for krb.
   49: #set -- `from -t`
   50: #v=$3
   51: set -- `from | wc -l`
   52: v=$1
   53: #v=`from | wc -l`
   54: 
   55: #v=0
   56: #exec 0</var/mail/$USER
   57: #while read line; do
   58: #  case "$line" in
   59: #    "From "*) v=$(($v + 1)) ;;
   60: #  esac
   61: #done
   62: #exec 0<&-
   63: 
   64: set --
   65: g=0
   66: v=000$v
   67: 
   68: while :; do
   69: 
   70:   case $v in
   71:     '' | 0 | 00) break ;;
   72:     *000) ;;
   73:     *)
   74:       case $g in
   75:         0) x= ;;
   76:         1) x=THOUSAND ;;
   77:         2) x=MILLION ;;
   78:         3) x=BILLION ;;
   79:         4) x=TRILLION ;;
   80:         5) x=QUADRILLION ;;
   81:         6) x=QUINTILLION ;;
   82:         7) x=SEXTILLION ;;
   83:         8) x=SEPTILLION ;;
   84:         *)
   85:           echo "YOU HAVE TOO MUCH MAIL!" 1>&2
   86:           exit 1
   87:           ;;
   88:       esac
   89: 
   90:       case $v in
   91:         *10) y=TEN ;;
   92:         *11) y=ELEVEN ;;
   93:         *12) y=TWELVE ;;
   94:         *13) y=THIRTEEN ;;
   95:         *14) y=FOURTEEN ;;
   96:         *15) y=FIFTEEN ;;
   97:         *16) y=SIXTEEN ;;
   98:         *17) y=SEVENTEEN ;;
   99:         *18) y=EIGHTEEN ;;
  100:         *19) y=NINETEEN ;;
  101:         *2?) y=TWENTY ;;
  102:         *3?) y=THIRTY ;;
  103:         *4?) y=FORTY ;;
  104:         *5?) y=FIFTY ;;
  105:         *6?) y=SIXTY ;;
  106:         *7?) y=SEVENTY ;;
  107:         *8?) y=EIGHTY ;;
  108:         *9?) y=NINETY ;;
  109:         *) y= ;;
  110:       esac
  111: 
  112:       case $v in
  113:         *[01]? | *?0) ;;
  114:         *) y=$y- ;;
  115:       esac
  116: 
  117:       case $v in
  118:         *1?) ;;
  119:         *1) y=${y}ONE ;;
  120:         *2) y=${y}TWO ;;
  121:         *3) y=${y}THREE ;;
  122:         *4) y=${y}FOUR ;;
  123:         *5) y=${y}FIVE ;;
  124:         *6) y=${y}SIX ;;
  125:         *7) y=${y}SEVEN ;;
  126:         *8) y=${y}EIGHT ;;
  127:         *9) y=${y}NINE ;;
  128:       esac
  129: 
  130:       case $v in
  131:         *1??) z=ONE ;;
  132:         *2??) z=TWO ;;
  133:         *3??) z=THREE ;;
  134:         *4??) z=FOUR ;;
  135:         *5??) z=FIVE ;;
  136:         *6??) z=SIX ;;
  137:         *7??) z=SEVEN ;;
  138:         *8??) z=EIGHT ;;
  139:         *9??) z=NINE ;;
  140:         *) z= ;;
  141:       esac
  142: 
  143:       set $z ${z:+HUNDRED} $y $x $*
  144:       ;;
  145:   esac
  146: 
  147:   g=$(($g + 1))
  148:   v=${v%%???}
  149: 
  150: done
  151: 
  152: p=S
  153: 
  154: case "$*" in
  155:   "") set ZERO ;;
  156:   ONE) p= ;;
  157: esac
  158: 
  159: echo "$*!
  160: 
  161: $* MAIL MESSAGE$p!
  162: 
  163: HAHAHAHAHA!"
Syntax (Markdown)