#!/bin/csh -f

if (! $?METAMAIL_TMPDIR) then
    set METAMAIL_TMPDIR=/tmp
endif

set TREEROOT=${METAMAIL_TMPDIR}/message-parts-`whoami`
if ($#argv < 3 || $#argv > 4) then
    echo "Usage:  showpartial file id partnum totalnum"
    exit -1
endif
set file=$1
# This next line is because message-id can contain weird chars
set id=`echo $2 | tr -d  \!\$\&\*\(\)\|\'\"\;\/\<\>\\` 
@ partnum = $3
if ($#argv == 3 || $4 == "") then
    set totalnum=-1
else
    @ totalnum = $4
endif

if (! -d  $TREEROOT)  then
    mkdir $TREEROOT
    if ($status) then 
        echo mkdir $TREEROOT failed
        exit -1
    endif
endif
if (! -d ${TREEROOT}/$id) then 
    mkdir ${TREEROOT}/$id
    if ($status) then 
        echo mkdir ${TREEROOT}/$id failed
        exit -1
    endif
endif
cp $file ${TREEROOT}/$id/$partnum
if ($status) then 
    echo cp $file ${TREEROOT}/$id/$partnum failed
    exit -1
endif
if ($totalnum == -1) then
    if (-e ${TREEROOT}/$id/CT) then
	set totalnum=`cat ${TREEROOT}/$id/CT`
    else
    	set totalnum=-1  #GROSS HACK
    endif
else
    echo $totalnum >! ${TREEROOT}/$id/CT
endif
# Slightly bogus here -- the shell messes up the newlines in the headers
# If you put $MM_HEADERS in quotes, it doesn't help.
# if ($partnum == 1) then
#     echo $MM_HEADERS > ${TREEROOT}/$id/HDRS
# endif
set found=0
set ix=1
set list=""
set limit=$totalnum
if ($limit == -1) set limit=25
while ($ix <= $limit)
    if (-e ${TREEROOT}/$id/$ix) then
	set list="$list $ix"
	@ found ++
    endif
    @ ix ++
end
if ($found == $totalnum) then
    cd ${TREEROOT}/$id
    cat $list > ${TREEROOT}/$id/FULL
#    cat ${TREEROOT}/$id/HDRS $list > ${TREEROOT}/$id/FULL
    rm $list
    echo All parts of this ${totalnum}-part message have now been read.
    metamail -d  ${TREEROOT}/$id/FULL
    echo WARNING:  To save space, the full file is now being deleted.  
    echo You will have to read all $totalnum parts again to see the full message again.
    rm ${TREEROOT}/$id/FULL
    rm ${TREEROOT}/$id/CT
#    rm ${TREEROOT}/$id/HDRS
    cd
    rmdir ${TREEROOT}/$id
    rmdir ${TREEROOT} >& /dev/null
else
    if (${totalnum} == -1) then
        echo So far you have only read $found of the several parts of this message.
    else
        echo So far you have only read $found of the $totalnum parts of this message.
    endif
    echo When you have read them all, then you will see the message in full.
endif
    
