#!/bin/sh # $NetBSD: countmail,v 1.3 1998/08/15 09:16:27 mycroft Exp $ # # Copyright (c) 1998 The NetBSD Foundation, Inc. # All rights reserved. # # This code is derived from software contributed to The NetBSD Foundation # by Charles M. Hannum. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. All advertising materials mentioning features or use of this software # must display the following acknowledgement: # This product includes software developed by the NetBSD # Foundation, Inc. and its contributors. # 4. Neither the name of The NetBSD Foundation nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # # Count the messages in your mailbox, using only POSIX shell builtins. # # Caveats: # # The read loop is horrendously slow on every implementation I've # tried. I suggest using from(1) and wc(1) instead, though these are # not shell builtins. # for krb. #set -- `from -t` #v=$3 set -- `from | wc -l` v=$1 #v=`from | wc -l` #v=0 #exec 0&2 exit 1 ;; esac case $g in 0) ;; *) result="$val $result" ;; esac ;; esac g=$(($g + 1)) case $v in *?10) val=TEN ;; *?11) val=ELEVEN ;; *?12) val=TWELVE ;; *?13) val=THIRTEEN ;; *?14) val=FOURTEEN ;; *?15) val=FIFTEEN ;; *?16) val=SIXTEEN ;; *?17) val=SEVENTEEN ;; *?18) val=EIGHTEEN ;; *?19) val=NINETEEN ;; *) case $v in *?2?) val=TWENTY ;; *?3?) val=THIRTY ;; *?4?) val=FOURTY ;; *?5?) val=FIFTY ;; *?6?) val=SIXTY ;; *?7?) val=SEVENTY ;; *?8?) val=EIGHTY ;; *?9?) val=NINETY ;; *) val= ;; esac case $v in *?0? | *??0) ;; *) val=${val}- ;; esac case $v in *??1) val=${val}ONE ;; *??2) val=${val}TWO ;; *??3) val=${val}THREE ;; *??4) val=${val}FOUR ;; *??5) val=${val}FIVE ;; *??6) val=${val}SIX ;; *??7) val=${val}SEVEN ;; *??8) val=${val}EIGHT ;; *??9) val=${val}NINE ;; esac ;; esac case $v in *?00) ;; *) result="$val $result" ;; esac case $v in *1??) val=ONE ;; *2??) val=TWO ;; *3??) val=THREE ;; *4??) val=FOUR ;; *5??) val=FIVE ;; *6??) val=SIX ;; *7??) val=SEVEN ;; *8??) val=EIGHT ;; *9??) val=NINE ;; esac case $v in *0??) ;; *) result="$val HUNDRED $result" ;; esac v=${v%%???} done plural=S case "$result" in "") result=ZERO ;; "ONE ") plural= ;; esac set -- $result echo "$*! $* NEW MAIL MESSAGE$plural! HAHAHAHAHA!"