#!/bin/sh # # Decode mail or news with uudecode, yydecode or metamail # CMD=mmdecode DESTDIR=~/tmp .. ~/scripts/getctty usage() { echo "usage: $CMD [-d] [-m]" >&2 exit 1 } trap 'r=$?; rm -rf $tmpdir $tmpfile; exit $r' 0 1 2 3 13 15 while getopts ":wm" c do case "$c" in w) w_flag=1;; m) m_flag=1;; :|'?') usage;; esac done tmpfile=$(mktemp ~/.$CMD.XXXXXX) || exit 1 cat >$tmpfile; [ -s $tmpfile ] || exit 1 [ -z "$m_flag" ] && type=$(nawk ' /^begin [0-9][0-9][0-9] / { print "u"; exit } /^=ybegin/ { print "y"; exit }' $tmpfile) if [ -n "$m_flag" -o -z "$type" ]; then [ -n "$w_flag" ] && { cd $DESTDIR; w_opt=-w; } mmcmd="metamail -p $w_opt $tmpfile; rm $tmpfile" if [ "$TERM" = "screen" ]; then getctty || exit 1 exec screen -U -t metamail sh -c "screen -X utf8 on; $mmcmd" <$ctty else eval "$mmcmd"; exit fi fi dir=$DESTDIR if [ -z "$w_flag" ]; then tmpdir=$(mktemp -d ~/.$CMD.XXXXXX) || exit 1 dir=$tmpdir fi cd $dir if [ $type = u ]; then uustrip <$tmpfile | uudecode -c 2>/dev/console else yydecode $tmpfile 2>/dev/console fi set *; [ "$1" = "*" ] && exit 1 if [ -z "$w_flag" ]; then for f in "$@"; do mmwrapper "$f" done fi .