Merge from vendor branch PKGSRC:
[netbsd-mini2440.git] / games / countmail / countmail
blobf1933e7211d9f3a88939250631358936bdb5394f
1 #!/bin/sh
2 # $NetBSD: countmail,v 1.6 2005/06/30 06:08:56 symka Exp $
5 # Copyright (c) 1998, 2002 The NetBSD Foundation, Inc.
6 # All rights reserved.
8 # This code is derived from software contributed to The NetBSD Foundation
9 # by Charles M. Hannum.
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.
20 # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
21 # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
22 # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23 # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
24 # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30 # POSSIBILITY OF SUCH DAMAGE.
33 # Count the messages in your mailbox, using only POSIX shell builtins.
35 # Caveats:
37 # The read loop is horrendously slow on every implementation I've
38 # tried. I suggest using from(1) and wc(1) instead, though these are
39 # not shell builtins.
41 # for krb.
42 #set -- `from -t`
43 #v=$3
44 set -- `from 2>/dev/null |wc -l`
45 v=$1
46 #v=`from | wc -l`
48 #v=0
49 #exec 0</var/mail/$USER
50 #while read line; do
51 # case "$line" in
52 # "From "*) v=$(($v + 1)) ;;
53 # esac
54 #done
55 #exec 0<&-
57 set --
58 g=0
59 v=000$v
61 while :; do
63 case $v in
64 '' | 0 | 00) break ;;
65 *000) ;;
67 case $g in
68 0) x= ;;
69 1) x=THOUSAND ;;
70 2) x=MILLION ;;
71 3) x=BILLION ;;
72 4) x=TRILLION ;;
73 5) x=QUADRILLION ;;
74 6) x=QUINTILLION ;;
75 7) x=SEXTILLION ;;
76 8) x=SEPTILLION ;;
78 echo "YOU HAVE TOO MUCH MAIL!" 1>&2
79 exit 1
81 esac
83 case $v in
84 *10) y=TEN ;;
85 *11) y=ELEVEN ;;
86 *12) y=TWELVE ;;
87 *13) y=THIRTEEN ;;
88 *14) y=FOURTEEN ;;
89 *15) y=FIFTEEN ;;
90 *16) y=SIXTEEN ;;
91 *17) y=SEVENTEEN ;;
92 *18) y=EIGHTEEN ;;
93 *19) y=NINETEEN ;;
94 *2?) y=TWENTY ;;
95 *3?) y=THIRTY ;;
96 *4?) y=FORTY ;;
97 *5?) y=FIFTY ;;
98 *6?) y=SIXTY ;;
99 *7?) y=SEVENTY ;;
100 *8?) y=EIGHTY ;;
101 *9?) y=NINETY ;;
102 *) y= ;;
103 esac
105 case $v in
106 *[01]? | *?0) ;;
107 *) y=$y- ;;
108 esac
110 case $v in
111 *1?) ;;
112 *1) y=${y}ONE ;;
113 *2) y=${y}TWO ;;
114 *3) y=${y}THREE ;;
115 *4) y=${y}FOUR ;;
116 *5) y=${y}FIVE ;;
117 *6) y=${y}SIX ;;
118 *7) y=${y}SEVEN ;;
119 *8) y=${y}EIGHT ;;
120 *9) y=${y}NINE ;;
121 esac
123 case $v in
124 *1??) z=ONE ;;
125 *2??) z=TWO ;;
126 *3??) z=THREE ;;
127 *4??) z=FOUR ;;
128 *5??) z=FIVE ;;
129 *6??) z=SIX ;;
130 *7??) z=SEVEN ;;
131 *8??) z=EIGHT ;;
132 *9??) z=NINE ;;
133 *) z= ;;
134 esac
136 set $z ${z:+HUNDRED} $y $x $*
138 esac
140 g=$(($g + 1))
141 v=${v%%???}
143 done
147 case "$*" in
148 "") set ZERO ;;
149 ONE) p= ;;
150 esac
152 echo "$*!
154 $* NEW MAIL MESSAGE$p!
156 HAHAHAHAHA!"