#!/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</var/mail/$USER
#while read line; do
#  case "$line" in
#    "From "*) v=$(($v + 1)) ;;
#  esac
#done
#exec 0<&-

result=
g=0

while :; do

  case $v in
    0 | '') break ;;
    ?) v=00$v ;;
    ??) v=0$v ;;
  esac

  case $v in
    *000) ;;
    *)
      case $g in
	0) ;;
	1) val=THOUSAND ;;
	2) val=MILLION ;;
	3) val=BILLION ;;
	4) val=TRILLION ;;
	5) val=QUADRILLION ;;
	6) val=QUINTILLION ;;
	7) val=SEXTILLION ;;
	8) val=SEPTILLION ;;
	*)
	  echo "YOU HAVE TOO MUCH MAIL!" 1>&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!"
