[mu TECH] formail tweak

From: Alfie Costa ([email protected])
Date: Thu Apr 06 2000 - 06:37:45 CEST


Tweak the third.

In /usr/bin/formail (which is a link to /usr/script/mu-formail)

The original says:
    
    *)
        if [ -z "${body}" ] && [ -z "$1" ] ; then
        body=yes
        echo
        fi

        if [ ${body} ] ; then
        echo "$@"
        fi

...which I changed to:

        if [ ${body} ]
        then echo "$@"
        else
                if [ -z "$1" ]
            then
                body=yes
                echo
            fi
        fi ;;

...which does the same thing but saves one or even two tests, depending on what
happens. I added a ";;" at the end, as when those are missing from within a
'case...esac' it can cause trouble, though I forget how exactly. Later in the
file there's a second similar test, which also has been changed.


#! /bin/ash
#########################################
# mu-formail - rustic formail for muLinux
# by M. Andreoli (1998)
##########################################

#set -x

opt=$1

usage()
{
cat <<END
mu-formail : rustic formail (by M. Andreoli)

Usage:

        cat mailbox | formail -s # split message in /tmp/msg.#
        cat msg | formail -r # reply to stdout
        cat msg | formail -f # format message
END
}

# Split message

split()
{
number=0
echo -n "splitting. Wait, please ..."

cat | while read line
do

set -- $line

case $1 in
>From )
            new=yes
        number=`expr $number + 1`
        echo -n " $number" > /tmp/msg.$number ;;
        
*)
        echo "$@" >> /tmp/msg.$number ;;
esac

done
echo " "
}

# format, removing spurious headers

format()
{
body=

cat | tr -d '\015' | while read line
do

set -- $line

case $1 in
From:)
        shift
        FROM="$@"
        echo "From: $FROM" ;;

Subject:)
        shift
        SUBJECT="$@"
        echo "Subject: $SUBJECT" ;;

*)
        if [ ${body} ]
        then echo "$@"
        else
            if [ -z "$1" ]
            then
                body=yes
                echo
            fi
        fi ;;
esac

done
}

# reply

reply()
{
body=

cat |tr -d '\015' | while read line
do

set -- $line

case $1 in
From:)
        shift
        FROM="$@"
        echo "To: $FROM" ;;

Subject:)
        shift
        SUBJECT="$@"
        echo "Subject: Re: $SUBJECT" ;;

*)
        if [ ${body} ]
        then echo "> $@"
        else
            if [ -z "$1" ]
            then
                body=yes
                echo
                echo "You wrote:"
            fi
        fi ;;

esac

done
}

# Main

case $opt in
    -h) usage ;;
    -s) split ;;
    -r) reply ;;
    -f) format ;;
esac

#End


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



This archive was generated by hypermail 2.1.6 : Sat Feb 08 2003 - 15:27:13 CET