#! /bin/sh # $Id: scandrafts,v 1.8 1995/04/26 20:02:49 jerry book3 $ ### scandrafts - scan MH draft folder; return to original folder if no -stay ### Usage: scandrafts [-stay] [scan arguments] ## ## THIS SCRIPT IS NICE WHEN YOU'RE WONDERING WHAT'S IN YOUR DRAFT ## FOLDER, OR YOU NEED TO WORK IN IT. ## ## BY DEFAULT, scandrafts SHOWS A LIST OF THE MESSAGES YOU'VE ALREADY ## SENT (THESE MESSAGES ARE IN FILES WITH A COMMA OR POUND SIGN BEFORE ## THEIR NAMES). THEN, IT scanS YOUR DRAFT FOLDER, AND POPS YOU BACK ## TO YOUR CURRENT FOLDER. ## ## IF YOU USE THE -stay OPTION, scandrafts WILL START A SHELL WITH ## BOTH THE CURRENT DIRECTORY AND CURRENT FOLDER IN THE DRAFT FOLDER. ## THAT WAY, YOU CAN RESTORE ONE OF THE ALREADY-SENT MESSAGES AND/OR ## refile IT TO ANOTHER FOLDER (IN CASE YOU FORGOT TO GIVE YOURSELF A ## COPY WHEN YOU SENT IT). OR, YOU CAN DO EXTENSIVE WORK ON THE ## DRAFTS, MORE DIRECTLY THAN A SCRIPT LIKE recomp WILL LET YOU. ## ## HERE'S A DEMONSTRATION: ## ## $ scandrafts -stay ## Draft message(s) you've already sent: ## ## ,1:Subject: Re: SC or GA islands ## ,5:Subject: Re: our previous message about banners dialups etc ## ,6:Subject: Re: Can you help? ## ,7:Subject: Out this morning ## ## To get them back, use 'mv'. ## =================================================================== ## Draft message(s) you haven't sent: ## ## 1 03/07*To:alison@mvus.cs Project status<<Alison, the project ## 2 empty ## 3+ 03/07*To:kx9cq@cornell. Scientific Visualization Demo<<I re ## ## You'll be in a /usr/local/bin/ksh shell in the +drafts folder. ## To quit, type control-d. ## scandrafts> rmm 2 ## scandrafts> mv ,6 6 ## scandrafts> scan ## 1 03/07*To:alison@mvus.cs Project status<<Alison, the project ## 3+ 03/07*To:kx9cq@cornell. Scientific Visualization Demo<<I re ## 6 03/04*To:warren Re: Can you help?<<Warren, you aske ## scandrafts> refile 6 +outbox ## scandrafts> ^D ## [folder +inbox now current] ## $ ## ## NOTE TO HACKERS: TABSTOPS ARE SET AT 4 IN THIS CODE args= # RESET IN CASE THERE'S AN args ENVIRONMENT VARIABLE folopts="-fast -nolist -nototal -nopack" mh=/usr/local/mh pageprog=${PAGER-/usr/ucb/more} # DISPLAYS SCREEN-BY-SCREEN stat=1 # DEFAULT EXIT STATUS; RESET TO 0 FOR NORMAL EXITS temp=/tmp/SCANDRFTS$$ >$temp chmod 600 $temp trap 'rm -f $temp; exit $stat' 0 1 2 15 # IF -stay SWITCH IS SET, SET $stay TO y: for arg do case "$arg" in -stay) stay=y ;; *) args="$args $arg" ;; esac done # GET DRAFT FOLDER NAME: draftfold="`$mh/mhparam draft-folder`" || { echo "`basename $0`: quitting: can't find your 'Draft-Folder'." 1>&2 exit } $mh/folder $folopts -push +$draftfold >/dev/null || exit folpath=`$mh/mhpath +$draftfold` || exit cd $folpath || exit # IF ANY UN-SENT DRAFTS, SHOW THEM; THEN, scan FOLDER. # PIPE ALL OF IT TO PAGER SO NONE OF IT SCROLLS OFF SCREEN: grep "^Subject: " [,#]*[1-9]* >$temp 2>/dev/null (if test -s $temp then echo "Draft message(s) you've already sent: " cat $temp echo case "$stay" in y) echo "To get them back, use 'mv'." ;; *) echo "To get them back, use 'cd $folpath' and 'mv'." ;; esac echo "=============================================================" echo "Draft message(s) you haven't sent: " fi $mh/scan $args 2>&1) | $pageprog # USE THEIR $SHELL, IF DEFINED... OTHERWISE, USE sh: case "$stay" in y) echo " You'll be in a ${SHELL-Bourne} shell in the +$draftfold folder. To quit, type control-d." PS1="scandrafts> " ${SHELL-sh} ;; esac # POP FOLDER BACK; PUT NEWLINE BEFORE MESSAGE: echo " [folder +`$mh/folder $folopts -pop` now current]" stat=0
[Table of Contents] [Index] [Return to Explanation of scandrafts]
This file is from the third edition of the book MH & xmh: Email for Users & Programmers, ISBN 1-56592-093-7, by Jerry Peek. Copyright © 1991, 1992, 1995 by O'Reilly & Associates, Inc. This file is freely-available; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. For more information, see the file copying.htm.
Suggestions are welcome: Jerry Peek <jpeek@jpeek.com>