#!/bin/csh -fb
# (The "-fb" might need to be changed to "-f" on some systems)
#

if ($#argv < 1) then
    echo "Usage:  extcompose output-file-name"
    exit 1
endif
set OUTFNAME=$1

chooseaccesstype:
echo ""
echo "Where is the external data that you want this mail message to reference?"
echo "    1 -- In a local file"
echo "    2 -- In an AFS file"
echo "    3 -- In an anonymous FTP directory on the Internet"
echo "    4 -- In an Internet FTP directory that requires a valid login"
echo "    5 -- Under the control of a mail server that will send the data on request"
echo ""
echo -n "Please enter a number from 1 to 5: "
set ans=$<
if ($ans == 1)  then
    set accesstype=local-file
else if ($ans == 2) then
    set accesstype=afs
else if ($ans == 3) then
    set accesstype=anon-ftp
else if ($ans == 4) then
    set accesstype=ftp
else if ($ans == 5) then
    set accesstype=mail-server
else
    echo "That is NOT one of your choices."
    goto chooseaccesstype
endif
if ($accesstype == "ftp" || $accesstype == "anon-ftp") then
    echo -n "Enter the full Internet domain name of the FTP site: "
    set site=$<
    echo -n "Enter the name of the directory containing the file (RETURN for top-level): "
    set directory=$<
    echo -n "Enter the name of the file itself: "
    set name = $<
    echo -n "Enter the transfer mode (type 'image' for binary data, RETURN otherwise): "
    set mode = $<
    if ($mode == "") set mode=ascii
    echo "Content-type: message/external-body; access-type=$accesstype; name="\"$name\"\; > $OUTFNAME
    echo -n "    site="\"$site\" >> $OUTFNAME
    if ($directory != "") echo -n "; directory="\"$directory\">> $OUTFNAME
    if ($mode != "") echo -n "; mode="\"$mode\">> $OUTFNAME
    echo "">> $OUTFNAME
else if ($accesstype == "local-file" || $accesstype == "afs") then
fname:
    echo -n "Enter the full path name for the file: "
    set name = $<
    if (! -e $name) then
	echo "The file $name does not seem to exist."
	goto fname
    endif
    echo "Content-type: message/external-body; access-type=$accesstype; name="\"$name\"> $OUTFNAME
else if ($accesstype == "mail-server") then
    echo -n "Enter the full email address for the mailserver: "
    set server=$<
    echo "Content-type: message/external-body; access-type=$accesstype; server="\"$server\"> $OUTFNAME
else
    echo accesstype $accesstype not yet implemented
    goto chooseaccesstype
endif

echo -n "Please enter the MIME content-type for the externally referenced data: "
set ctype = $<
getcenc:
echo "Is this data already encoded for email transport?"
echo "  1 -- No, it is not encoded"
echo "  2 -- Yes, it is encoded in base64"
echo "  3 -- Yes, it is encoded in quoted-printable"
echo "  4 -- Yes, it is encoded using uuencode"
set encode=$<
switch ("$encode")
    case 1:
        set cenc=""
        breaksw
    case 2:
        set cenc="base64"
        breaksw
    case 3:
        set cenc="quoted-printable"
        breaksw
    case 4:
        set cenc="x-uue"
        breaksw
    default:
        echo "That is not one of your choices."
        goto getcenc
endsw
echo "" >> $OUTFNAME
echo "Content-type: " $ctype >> $OUTFNAME
if ($cenc != "") echo "Content-transfer-encoding: " $cenc >> $OUTFNAME
echo "" >> $OUTFNAME
if ($accesstype == "mail-server") then
    echo "Please enter all the data to be sent to the mailserver in the message body, "
    echo "ending with ^D or your usual end-of-data character:"
    cat >> $OUTFNAME
endif
