home *** CD-ROM | disk | FTP | other *** search
- #! /bin/sh
- #
- # mailsplit: A tarmail variant -M F Wyle 1988-
- #
- # @(#)mailsplit 2.1 88/07/25
-
- ME=`/usr/bin/basename $0`
- SP=/usr/bin/split
- LI=700
- CM="$0 $*"
- VE="2.1 88/07/25"
- MA=/usr/ucb/Mail
- FC=0
- DE=0
- DB=5
- MF=""
- SU="_default_"
- TM=false
- FL=""
- ne="FL=$FL@"
- TO=""
- UU=uuencode
- TD=/tmp
- TA=tar
- CO=compress
- RA=all
-
- umask 0
-
- for AR in $* ; do
- case $AR in
- -C ) ne="CO=" ;;
- -D ) ne="TD=" ;;
- -M ) ne="MF=" ;;
- -T ) ne="TA=" ;;
- -V ) DB=9 ;;
- -d ) ne="DE=" ;;
- -l ) ne="LI=" ;;
- -m ) ne="MA=" ;;
- -n ) TM=true ;;
- -r ) ne="RA=" ;;
- -s ) ne="SU=" ;;
- -t ) TM=true ;;
- -v ) echo "$ME version $VE by Mitch Wyle" ; exit 0 ;;
- -x* ) DB=`echo $AR | cut -c3` ; DB=${DB:-0} ;;
- -u ) ne="UU=" ;;
- -* ) echo " " ; echo "Bad flag for $ME": $AR
- echo "Usage: $ME [<options>] <mailpath> <file(s)>"
- echo "Example: $ME werner@utastro.uucp ./german_lessons"
- echo " "
- exit 0 ;;
- * ) eval $ne"$AR" ; ne="FL=$FL@" ;;
- esac
- done
- case $# in
- 0 | 1 )
- echo " "
- echo "Usage: $ME [<options>] <mailpath> <file(s)>"
- echo "Example: $ME werner@utastro.uucp german_lessons"
- echo " "
- exit 0 ;;
- esac
- IFS=@
- set $FL
- TO=$1
- case $SU in
- _default_ ) SU=$2 ;;
- esac
-
- case $DB in
- 8|9) set -x ;;
- esac
-
- T1=$TD/1sp$$
- T2=$TD/2sp$$
- T3=$TD/3sp$$
-
- case $RA in
- all) ;;
- * )
- R=""
- RA=`echo $RA | sed 's/,/\@/'`
- for tok in $RA ; do
- if echo $tok | grep -s '\-' ; then
- t=`echo $tok | sed 's/-/@-@/'`
- set $t
- i=$1
- max=${3:-99}
- while test $i -le $max ; do
- R=$R"@"$i
- i=`expr $i+1`
- done
- else
- R=$R"@"$tok
- fi
- RA=$R
- done ;;
- esac
-
- case $DB in
- 5|6|7|8|9) echo "beginning tar and compress..." ;;
- esac
- set $FL ; shift
- for i in $* ; do
- if test -s $i ; then
- FC=`expr $FC + 1`
- fi
- done
- if test $FC -gt 0 ; then
- case $DB in
- 1|2|3|4)
- case $TM in
- true )
- echo "would have issued command:"
- echo "$TA cvf - $* 2> /dev/null | $CO >$T1" ;;
- false) $TA cvf - $* 2> /dev/null | $CO >$T1 ;;
- * ) echo "Sigh... Programmer error in $ME at line 93." ;;
- esac ;;
- *)
- case $TM in
- true )
- echo "would have issued command:"
- echo "$TA cvf - $* | $CO >$T1" ;;
- false) $TA cvf - $* | $CO >$T1 ;;
- * ) echo "Sigh... Programmer error in $ME at line 101." ;;
- esac ;;
- esac
- else
- case $DB in
- [5-9] ) echo "...whoops! Nothing to send! Punting..." 1>&2 ;;
- esac
- exit 1
- fi
- case $DB in
- 5|6|7|8|9) echo "...finished tar, compress, starting uuencode..."
- esac
- case $TM in
- true )
- echo "would have issued command:"
- echo "$UU $T1 $T1 > $T2 " ;;
- false) $UU $T1 $T1 > $T2 ; ;;
- * ) echo "Sigh... Programmer error in $ME at line 118." ;;
- esac
- case $DB in
- 5|6|7|8|9) echo "...finished uuencode, starting split..."
- esac
- case $TM in
- true )
- echo "would have issued command:"
- echo "$SP -$LI $T2 $T3" ;;
- false) $SP -$LI $T2 $T3 ; ;;
- * ) echo "Sigh... Programmer error in $ME at line 128." ;;
- esac
- case $TM in
- true )
- echo "would have issued commands:"
- echo "$MA -s "$SU - part n of m" $TO"
- echo "with n ranging from 1 to m; m cannot be determined."
- echo "without running for real."
- exit 0 ;;
- esac
-
- n=1
- set $T3*
- for f do
- SE=false
- case $RA in
- all) SE=true ;;
- * )
- for p in $RA ; do
- case $p in
- $n ) SE=true ;;
- esac
- done ;;
- esac
- case $SE in
- true)
- {
- echo " "
- case $n in
- 1)
- if test ! -s $f ; then
- case $DB in
- [5-9]) echo "...whoops! $SP failed! Punting..." 1>&2 ;;
- esac
- exit 1 ;
- fi
- echo "[The attached script will glue these mail messages together,"
- echo "uuencode, uncompress, and extract all the files. Be sure"
- echo "to send the pieces through this script in the proper order!"
- echo " "
- echo "#! /bin/sh"
- echo "echo extracting data..."
- echo "/bin/awk '"
- echo "BEGIN { inhex = 0 ; part = 0 }"
- echo "/^---/ {"
- echo " if (\$2 == \"start\") part++"
- echo " if (\$6 != part) exit 1"
- echo " if (inhex && (NF > 1))"
- echo " inhex = 0"
- echo " else {"
- echo " inhex = 1"
- echo " getline"
- echo " }"
- echo "}"
- echo "{ if (inhex) print \$0 }' > /tmp/xtr\$\$"
- echo ""
- echo " if test \$? = 1 ; then"
- echo " echo 'Parts sent through out of order!! Punting.'"
- echo " /bin/rm -f /tmp/xtr\$\$"
- echo " exit 1"
- echo " fi"
- echo ""
- echo "echo ...finished extraction, starting uudecode..."
- echo "fname=\`head -100 /tmp/xtr\$\$ | grep begin | cut -f3 -d' '\`"
- echo "OurDir=\`pwd\`"
- echo "cd /tmp"
- echo "$UU xtr\$\$"
- echo "/bin/rm -f xtr\$\$"
- echo "/bin/chmod 777 \$fname"
- echo "mv \$fname \$fname.Z"
- echo "echo ...finished uudecode, starting uncompress..."
- echo "uncompress \$fname"
- echo "mv \$fname \$OurDir"
- echo "cd \$OurDir"
- echo "echo ...finished uncompress, starting tar extraction..."
- echo "$TA xvf \$fname"
- echo "/bin/rm -f /tmp/xtr* \$fname"
- echo " " ;;
- esac
- echo " "
- echo "This file was packed by mailsplit version:"
- echo $VE
- echo with command:
- echo "$CM"
- echo "on: `date`"
- echo " "
- echo "--- start of $SU part $n of $#"
- cat $f
- echo "--- end of $SU part $n of $#"
- echo " "
- echo " "
- } | $MA $MF -s "$SU - part $n of $#" $TO
- case $DB in
- [5-9]) echo "...sent part $n of $# to $MA..." ;;
- esac
- case $DB in
- 5|6|7|8|9) echo "...sleeping $DE seconds (waiting for mailer) ..." ;;
- esac
- sleep $DE ;;
- esac
- n=`expr $n + 1`
- done
- /bin/rm -f $T1 $T2 $T3*
-