#!/bin/sh # $NetBSD: countmail,v 1.7 2008/04/28 20:22:53 martin Exp $ # # Copyright (c) 1998, 2002 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. # # 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 2>/dev/null |wc -l` v=$1 #v=`from | wc -l` #v=0 #exec 0&2 exit 1 ;; esac case $v in *10) y=TEN ;; *11) y=ELEVEN ;; *12) y=TWELVE ;; *13) y=THIRTEEN ;; *14) y=FOURTEEN ;; *15) y=FIFTEEN ;; *16) y=SIXTEEN ;; *17) y=SEVENTEEN ;; *18) y=EIGHTEEN ;; *19) y=NINETEEN ;; *2?) y=TWENTY ;; *3?) y=THIRTY ;; *4?) y=FORTY ;; *5?) y=FIFTY ;; *6?) y=SIXTY ;; *7?) y=SEVENTY ;; *8?) y=EIGHTY ;; *9?) y=NINETY ;; *) y= ;; esac case $v in *[01]? | *?0) ;; *) y=$y- ;; esac case $v in *1?) ;; *1) y=${y}ONE ;; *2) y=${y}TWO ;; *3) y=${y}THREE ;; *4) y=${y}FOUR ;; *5) y=${y}FIVE ;; *6) y=${y}SIX ;; *7) y=${y}SEVEN ;; *8) y=${y}EIGHT ;; *9) y=${y}NINE ;; esac case $v in *1??) z=ONE ;; *2??) z=TWO ;; *3??) z=THREE ;; *4??) z=FOUR ;; *5??) z=FIVE ;; *6??) z=SIX ;; *7??) z=SEVEN ;; *8??) z=EIGHT ;; *9??) z=NINE ;; *) z= ;; esac set $z ${z:+HUNDRED} $y $x $* ;; esac g=$(($g + 1)) v=${v%%???} done p=S case "$*" in "") set ZERO ;; ONE) p= ;; esac echo "$*! $* NEW MAIL MESSAGE$p! HAHAHAHAHA!"