[comp.mail.elm] mailbox summary script

brennan@rtp.dg.com (Dave Brennan) (04/09/90)

Here's a script I wrote that users around here have found useful.  I hope
the people reading this group will find it useful as well.  This script
prints information about the message in your mailbox.  For example:

% ckmail
Mailbox brennan: 2 new, 6 unseen, 35 old messages.

# ckmail
Mailbox root: empty.

There's probably a faster way to do this, but I just wanted to get it to
work with as little effort as possible.  Enjoy!


#!/bin/csh -f
#
# ckmail - by Dave Brennan (brennan@rtp.dg.com)
#
# This is a shell script to indicate to the user his mailbox status.
# It assumes that the user uses elm as a mailer.
#
# This will be fouled up if either "From " or "Status: " appear at the
# beginning of a non-header line.
#
if ("$MAIL" == "") then
  echo "Sorry.  $MAIL not defined."
  exit
endif
# count the total number of messages:
set total = `grep "^From " $MAIL | wc | cut -c5-7`
# count the number seen by elm:
set seen = `grep "^Status: " $MAIL | wc | cut -c5-7`
# count the number read:
set read = `grep "^Status: R" $MAIL | wc | cut -c5-7`
# count the number unseen by the user
set unseen = `grep "^Status: O" $MAIL | wc | cut -c5-7`
# so new messages = 
@ new = $total - $seen
# build display strings
set c1 = ""
set c2 = ""
if ( $new != 0 ) then
  set new = "$new new"
  set c1 = ", "
else
  set new = ""
endif
if ( $unseen != 0 ) then
  set unseen = "$unseen unseen"
  set c2 = ", "
else
  set unseen = ""
endif
if ( $read != 0 ) then
  set read = " $read old"
else
  set read = ""
  if ( "$c2" == ", " ) then
	set c2 = ""
  else
	set c1 = ""
  endif
endif
# stupid, stupid csh...
set mail = $MAIL
set mbox = $mail:t
# here's the deal:
if ( $total != 0 ) then
  echo Mailbox $mbox':' $new$c1$unseen$c2$read messages.
else
  echo Mailbox $mbox':' empty.
endif
--
                                                   _________
Dave Brennan, User Interfaces, Data General Corp. /      brennan@dg-rtp.dg.com 
Research Triangle Park, North Carolina, 27709    /  ...mcnc!rti!dg-rtp!brennan
Hm: (919) 460-5725  Wk: (919) 248-6330 _________/ dave_brennan@rpitsmts.bitnet

gupta@ux1.cso.uiuc.edu (04/14/90)

> # count the total number of messages:
> set total = `grep "^From " $MAIL | wc | cut -c5-7`
> # count the number seen by elm:
> set seen = `grep "^Status: " $MAIL | wc | cut -c5-7`
> # count the number read:
> set read = `grep "^Status: R" $MAIL | wc | cut -c5-7`
> # count the number unseen by the user
> set unseen = `grep "^Status: O" $MAIL | wc | cut -c5-7`

I don't think BSD machines have cut. I simply got rid of the last pipe, tacked
the -l option onto the end of the wc command, and it worked on BSD.

Thanks for the script!

Rohit
-------------------------------------------------------------------------------
Internet: rohit@uiuc.edu 		UUCP: uunet!uiucuxc!ux1!gupta
BITnet: GUPTA@UIUCVMD 			"Master's of Business - that's
					    the lowest!"  -  Diner