Sophie

Sophie

distrib > Mandriva > 2010.0 > x86_64 > by-pkgid > 1fec5bad01a4f85042e019065a3fb665 > files > 11

metamail-2.7-16mdv2009.0.src.rpm

diff -d -r -u -P mm2.7.orig/src/bin/audiocompose mm2.7/src/bin/audiocompose
--- mm2.7.orig/src/bin/audiocompose	Mon Jun 15 00:30:47 1998
+++ mm2.7/src/bin/audiocompose	Sat Jun 20 14:41:16 1998
@@ -28,8 +28,8 @@
     set dev=/dev/audio
 endif
 
-set audiofile=$1
-if (-e $audiofile && ! -z $audiofile) goto whatnext
+set audiofile="$1"
+if (-e "$audiofile" && ! -z "$audiofile") goto whatnext
 
 record:
 echo -n "Press RETURN when you are ready to start recording: "
@@ -38,13 +38,22 @@
 # THIS IS UNBELIEVABLY GRUBBY
 onintr cleanup
 if (! $?RECORD_AUDIO) then
-    (/bin/cat < $dev > $audiofile) &
+    (/bin/cat < $dev > "$audiofile") &
 else
-    ($RECORD_AUDIO > $audiofile) &
+    ($RECORD_AUDIO > "$audiofile") &
 endif
-jobs -l > ${METAMAIL_TMPDIR}/AUDCAT.$$
-set foo=`/bin/cat ${METAMAIL_TMPDIR}/AUDCAT.$$`
-/bin/rm ${METAMAIL_TMPDIR}/AUDCAT.$$
+#  Generate temporary file name:
+if ( -x /bin/mktemp ) then
+    set TmpAudCat=`/bin/mktemp ${METAMAIL_TMPDIR}/AUDCAT.XXXXXXX` || exit 1
+else if ( -x /usr/bin/mktemp ) then
+    set TmpAudCat=`/usr/bin/mktemp ${METAMAIL_TMPDIR}/AUDCAT.XXXXXXX` || exit 1
+else
+    set TmpAudCat=${METAMAIL_TMPDIR}/AUDCAT.$$
+    rm -rf $TmpAudCat
+endif
+jobs -l > $TmpAudCat
+set foo=`/bin/cat $TmpAudCat`
+/bin/rm $TmpAudCat
 set PID=$foo[2]
 echo -n "press RETURN when you are done recording: "
 set foo=$<
@@ -63,7 +72,7 @@
 set which = $<
     switch ("$which")
         case 1:
-          cat $audiofile > $dev
+          cat "$audiofile" > $dev
           breaksw
         case 2:
           goto record
diff -d -r -u -P mm2.7.orig/src/bin/audiosend mm2.7/src/bin/audiosend
--- mm2.7.orig/src/bin/audiosend	Mon Jun 15 00:30:47 1998
+++ mm2.7/src/bin/audiosend	Sat Jun 20 14:42:48 1998
@@ -29,7 +29,7 @@
 endif
 
 if ( $#argv == 1 ) then
-    set to = $1
+    set to = "$1"
 else
     echo -n "To: "
     set to = $<
@@ -43,8 +43,23 @@
 echo -n "Press RETURN when you are ready to start recording: "
 set foo = $<
 
-set fname = ${METAMAIL_TMPDIR}/audio-out.$$
-set fnameraw = ${METAMAIL_TMPDIR}/audio-raw.$$
+#  Generate work file names:
+if ( -x /bin/mktemp ) then
+    set fname=`/bin/mktemp ${METAMAIL_TMPDIR}/audio-out.XXXXXXX` || exit 1
+else if ( -x /usr/bin/mktemp ) then
+    set fname=`/usr/bin/mktemp ${METAMAIL_TMPDIR}/audio-out.XXXXXXX` || exit 1
+else
+    set fname = ${METAMAIL_TMPDIR}/audio-out.$$
+    rm -rf $fname
+endif
+if ( -x /bin/mktemp ) then
+    set fnameraw=`/bin/mktemp ${METAMAIL_TMPDIR}/audio-raw.XXXXXXX` || exit 1
+else if ( -x /usr/bin/mktemp ) then
+    set fnameraw=`/usr/bin/mktemp ${METAMAIL_TMPDIR}/audio-raw.XXXXXXX` || exit 1
+else
+    set fnameraw = ${METAMAIL_TMPDIR}/audio-raw.$$
+    rm -rf $fnameraw
+endif
 
 echo "To: " "$to" > $fname
 echo "Subject: " "$subject" >> $fname
@@ -60,9 +75,18 @@
 else
     ($RECORD_AUDIO > $fnameraw) &
 endif
-jobs -l > ${METAMAIL_TMPDIR}/AUDCAT.$$
-set foo=`/bin/cat ${METAMAIL_TMPDIR}/AUDCAT.$$`
-/bin/rm ${METAMAIL_TMPDIR}/AUDCAT.$$
+#  Generate temporary file name:
+if ( -x /bin/mktemp ) then
+    set TmpAudCat=`/bin/mktemp ${METAMAIL_TMPDIR}/AUDCAT.XXXXXXX` || exit 1
+else if ( -x /usr/bin/mktemp ) then
+    set TmpAudCat=`/usr/bin/mktemp ${METAMAIL_TMPDIR}/AUDCAT.XXXXXXX` || exit 1
+else
+    set TmpAudCat=${METAMAIL_TMPDIR}/AUDCAT.$$
+    rm -rf $TmpAudCat
+endif
+jobs -l > $TmpAudCat
+set foo=`/bin/cat $TmpAudCat`
+/bin/rm $TmpAudCat
 set PID=$foo[2]
 echo -n "press RETURN when you are done recording: "
 set foo=$<
@@ -86,7 +110,7 @@
     switch ("$which")
         case 1:
           echo -n "Sending mail, please wait...  "
-          /usr/lib/sendmail $to  $cc < $fname
+          /usr/lib/sendmail "$to" "$cc" < $fname
           if (! $status) then
             echo "Done."
             rm $fname
diff -d -r -u -P mm2.7.orig/src/bin/extcompose mm2.7/src/bin/extcompose
--- mm2.7.orig/src/bin/extcompose	Mon Jun 15 00:30:47 1998
+++ mm2.7/src/bin/extcompose	Sat Jun 20 14:47:19 1998
@@ -6,7 +6,7 @@
     echo "Usage:  extcompose output-file-name"
     exit 1
 endif
-set OUTFNAME=$1
+set OUTFNAME="$1"
 
 chooseaccesstype:
 echo ""
@@ -19,21 +19,21 @@
 echo ""
 echo -n "Please enter a number from 1 to 5: "
 set ans=$<
-if ($ans == 1)  then
+if ("$ans" == 1)  then
     set accesstype=local-file
-else if ($ans == 2) then
+else if ("$ans" == 2) then
     set accesstype=afs
-else if ($ans == 3) then
+else if ("$ans" == 3) then
     set accesstype=anon-ftp
-else if ($ans == 4) then
+else if ("$ans" == 4) then
     set accesstype=ftp
-else if ($ans == 5) then
+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
+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): "
@@ -42,27 +42,27 @@
     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
+    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
+    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 "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
+    echo "Content-type: message/external-body; access-type=$accesstype; server="\"$server\"> "$OUTFNAME"
 else
-    echo accesstype $accesstype not yet implemented
+    echo accesstype "$accesstype" not yet implemented
     goto chooseaccesstype
 endif
 
@@ -92,12 +92,12 @@
         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 "" >> "$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
+    cat >> "$OUTFNAME"
 endif
diff -d -r -u -P mm2.7.orig/src/bin/getfilename mm2.7/src/bin/getfilename
--- mm2.7.orig/src/bin/getfilename	Mon Jun 15 00:30:47 1998
+++ mm2.7/src/bin/getfilename	Sat Jun 20 14:47:43 1998
@@ -8,9 +8,9 @@
     echo Aborted
     exit -1
 endif
-if (! -r  $fnam) then
+if (! -r "$fnam") then
     echo No such file
     exit -1
 endif
-cp $fnam $2
+cp "$fnam" "$2"
 exit 0
diff -d -r -u -P mm2.7.orig/src/bin/mailserver mm2.7/src/bin/mailserver
--- mm2.7.orig/src/bin/mailserver	Mon Jun 15 00:30:47 1998
+++ mm2.7/src/bin/mailserver	Sat Jun 20 23:01:33 1998
@@ -28,20 +28,28 @@
 rehash
 set FromName=""
 set Subject=""
-set TmpFile=/tmp/ms.$$
+#  Generate temporary file name:
+if ( -x /bin/mktemp ) then
+    set TmpFile=`/bin/mktemp /tmp/ms.XXXXXXX` || exit 1
+else if ( -x /usr/bin/mktemp ) then
+    set TmpFile=`/usr/bin/mktemp /tmp/ms.XXXXXXX` || exit 1
+else
+    set TmpFile=/tmp/ms.$$
+    rm -rf $TmpFile
+endif
 set FOORAW=$<
 while ("$FOORAW" != "") 
 set FOO=(` echo "$FOORAW" | tr "[" "x"`)
 set BAR=($FOO)
-set BARLC=(`echo $FOO | tr A-Z a-z`)
-if ($BARLC[1] == "from:") then
+set BARLC=(`echo "$FOO" | tr A-Z a-z`)
+if ("$BARLC[1]" == "from:") then
 	if ("$FromName" == "") then
-		set FromName = ($BAR[2-])
+		set FromName = ("$BAR[2-]")
 	endif
 else if ($BARLC[1] == "reply-to:") then
-	set FromName = ($BAR[2-])
+	set FromName = ("$BAR[2-]")
 else if ($BARLC[1] == "subject:") then
-	set Subject = ($BAR[2-])
+	set Subject = ("$BAR[2-]")
 endif
 set FOORAW=$<
 end
@@ -52,10 +60,10 @@
 endif
 
 if ("$FromName" == "") then
-	cat > $TmpFile <<!
-From: $LOCALADDR@`hostname`
-To: $MAINTAINER
-Subject: $Subject
+	echo From: "$LOCALADDR"@`hostname` > $TmpFile
+	echo To: "$MAINTAINER" >> $TmpFile
+	echo Subject: "$Subject" >> $TmpFile
+	cat >> $TmpFile <<!
 
 The metamail mailserver script, installed locally as $LOCALADDR, 
has received a request without any reply address.
 
@@ -68,18 +76,18 @@
 probably run in some circumstance other than mail delivery.
 --------------------
 !
-	cat $TmpFile - | /usr/lib/sendmail $MAINTAINER
+	cat $TmpFile - | /usr/lib/sendmail "$MAINTAINER"
 	# Takes the rest of the message from standard input
 	rm $TmpFile
 	exit 0
 endif
 
-set danger=`echo $Subject | fgrep ..`
-if ($danger != "") then
-	cat > $TmpFile <<!
-From: $LOCALADDR@`hostname`
-To: $FromName
-Subject: Re: $Subject
+set danger=`echo "$Subject" | fgrep ..`
+if ("$danger" != "") then
+	echo From: "$LOCALADDR"@`hostname` > $TmpFile
+	echo To: "$FromName" >> $TmpFile
+	echo Subject: Re: "$Subject" >> $TmpFile
+	cat >> $TmpFile <<!
 
 For security reasons, this mailserver automatically rejects all requests 
 that contain ".." in the path name.
@@ -93,60 +101,64 @@
 
 cd $ROOTDIR
 if (! -e "$Subject") then
-	cat > $TmpFile <<!
-From: $LOCALADDR@`hostname`
-To: $FromName
-Subject: Re: $Subject
-
-You recently sent mail to this mail-server requesting the file: 
-	$Subject
-
-That file does not exist, so your request could not be met.
-
-Here is a list of the currently available files:
---------------------------------
-!
+	#  We use a bunch of echo statements rather than a here-document
+	#  so that we can be sure to quote all of our variables properly.
+	echo From: "$LOCALADDR"@`hostname` > $TmpFile
+	echo To: "$FromName" >> $TmpFile
+	echo Subject: Re: "$Subject" >> $TmpFile
+	echo "" >> $TmpFile
+	echo "You recently sent mail to this mail-server requesting the file:" >> $TmpFile
+	echo "	$Subject" >> $TmpFile
+	echo "" >> $TmpFile
+	echo "That file does not exist, so your request could not be met." >> $TmpFile
+	echo "" >> $TmpFile
+	echo "Here is a list of the currently available files:" >> $TmpFile
+	echo "--------------------------------" >> $TmpFile
 	ls -R >> $TmpFile
+	echo "" >> $TmpFile
 	/usr/lib/sendmail -t < $TmpFile
 	rm $TmpFile
 	exit 0
 endif
 
-if (-e ${Subject}.ct) then
-	set ct=`cat ${Subject}.ct`
+if (-e "${Subject}.ct") then
+	set ct=`cat "${Subject}.ct"`
 else 
 	set ct="application/octet-stream"
 endif
 
 metasend -b -t "$FromName" -f "$Subject" -m "$ct" -s "Re: $Subject"
 if ($status != 0) then
-	cat > $TmpFile <<!
-From: $LOCALADDR@`hostname`
-To: $FromName
-Subject: Re: $Subject
-
-You recently sent mail to this mail-server requestion the file: 
-	$Subject
-
-An unanticipated error apparently precluded delivery of the file.
-Please accept our apologies.
-
-Command failed: 
-  metasend -b -t "$FromName" -f "$Subject" -m "$ct" -s "Re: $Subject"
-
-!
+	#  We use a bunch of echo statements rather than a here-document
+	#  so that we can be sure to quote all of our variables properly.
+	echo From: "$LOCALADDR"@`hostname` > $TmpFile
+	echo To: "$FromName" >> $TmpFile
+	echo Subject: Re: "$Subject" >> $TmpFile
+	echo "" >> $TmpFile
+	echo "You recently sent mail to this mail-server requestion the file:" >> $TmpFile
+	echo "	$Subject" >> $TmpFile
+	echo "" >> $TmpFile
+	echo "An unanticipated error apparently precluded delivery of the file." >> $TmpFile
+	echo "Please accept our apologies." >> $TmpFile
+	echo "" >> $TmpFile
+	echo "Command failed:" >> $TmpFile
+	echo "  metasend -b -t $FromName -f $Subject -m $ct -s Re: $Subject" >> $TmpFile
+	echo "" >> $TmpFile
 	/usr/lib/sendmail -t < $TmpFile
 	rm $TmpFile
 	exit 0
 endif
 
 if ("$LOGADDR" != "") then
-	/usr/lib/sendmail -t <<!
-From: ${LOCALADDR}@`hostname`
-To: $LOGADDR
-Subject: Autosend delivery report
+	echo From: "${LOCALADDR}"@`hostname` > $TmpFile
+	echo To: "$LOGADDR" >> $TmpFile
+	echo Subject: Autosend delivery report >> $TmpFile
+	echo "" >> $TmpFile
+	echo The file: "$Subject" >> $TmpFile
+	echo was sent to: "$FromName" >> $TmpFile
+	echo "" >> $TmpFile
+	/usr/lib/sendmail -t < $TmpFile
+endif
 
-The file: $Subject 
-was sent to: $FromName
-!
+rm -f $TmpFile
 exit 0
diff -d -r -u -P mm2.7.orig/src/bin/metasend mm2.7/src/bin/metasend
--- mm2.7.orig/src/bin/metasend	Mon Jun 15 00:30:47 1998
+++ mm2.7/src/bin/metasend	Sat Jun 20 14:59:30 1998
@@ -45,7 +45,7 @@
                 echo "-S requires a following argument, the SPLIT threshhold"
                 exit -1
             endif
-            set splitsize=$1
+            set splitsize="$1"
             shift
             breaksw
         case "-b":
@@ -68,7 +68,7 @@
                 echo "-i requires a following argument, the Content-ID value"
                 exit -1
             endif
-            set cid=$1
+            set cid="$1"
             shift
             breaksw
         case "-I":
@@ -77,7 +77,7 @@
                 echo "-I requires a following argument, the multipart Content-ID value"
                 exit -1
             endif
-            set multicid=$1
+            set multicid="$1"
             shift
             breaksw
         case "-s":
@@ -122,12 +122,12 @@
                 echo "-e requires a following argument, the ENCODING value"
                 exit -1
             endif
-            set encode=$1
-            if ($encode == "base64") then
+            set encode="$1"
+            if ("$encode" == "base64") then
 	    set encodingprog = "mimencode -b"
-            else if ($encode == "x-uue") then
+            else if ("$encode" == "x-uue") then
 	        set encodingprog = "uuencode mail-body"
-            else if ($encode == "7bit") then
+            else if ("$encode" == "7bit") then
 	        set encodingprog = cat
            else
 	        set encodingprog = "mimencode -q"
@@ -141,9 +141,9 @@
                 echo "-f requires a following argument, the DATA FILE"
                 exit -1
             endif
-            set datafile=$1
-            if (! -e  $datafile) then
-                echo The file $datafile does not exist.
+            set datafile="$1"
+            if (! -e "$datafile") then
+                echo The file "$datafile" does not exist.
                 exit -1
             endif
             shift
@@ -154,10 +154,10 @@
                 echo "-m requires a following argument, the MIME CONTENT-TYPE"
                 exit -1
             endif
-#            set ctyperaw = $1
-#            set  ctype=`echo $ctyperaw | tr \" \'`
+#            set ctyperaw = "$1"
+#            set  ctype=`echo "$ctyperaw" | tr \" \'`
 	set ctype = "$1"
-	if (`echo $ctype | grep /` == "") then
+	if (`echo "$ctype" | grep /` == "") then
 	    echo "Invalid content-type specified"
 	    exit -1
 	endif
@@ -228,11 +228,11 @@
 	        endif
 	endif
 	set ctype${multipart} = "$ctype"
-	set datafile${multipart} = $datafile
-	set encode${multipart} = $encode
+	set datafile${multipart} = "$datafile"
+	set encode${multipart} = "$encode"
 	set cdescrip${multipart} = "$cdescrip"
 	set cid${multipart} = "$cid"
-	set isentity${multipart} = $isentity
+	set isentity${multipart} = "$isentity"
 	set encodingprog${multipart} = "$encodingprog"
 	unset ctype
 	unset datafile
@@ -247,11 +247,11 @@
 	shift
 	breaksw
         default:
-            echo UNRECOGNIZED METASEND OPTION: $1
+            echo UNRECOGNIZED METASEND OPTION: "$1"
             exit -1
     endsw
 end
-if ($batchmode == 0) then
+if ("$batchmode" == 0) then
     if (! $?to) then
         echo -n "To: "
         set to = $<
@@ -271,18 +271,18 @@
 #        set  ctype=`echo $ctyperaw | tr \" \'`
         set ctype = "$<"
     endif
-    if (`echo $ctype | grep /` == "") then
+    if (`echo "$ctype" | grep /` == "") then
         echo "Invalid content-type specified"
         unset ctype
         goto anotherpart
     endif
-#    if ($ctype != $ctyperaw)  echo Double  quotes not allowed, using $ctype
+#    if ("$ctype" != "$ctyperaw") echo Double quotes not allowed, using "$ctype"
     if (! $?datafile) then
         getfile:
         echo -n "Name of file containing $ctype data: "
         set datafile = $<
-        if (! -e  $datafile) then
-            echo The file $datafile does not exist.
+        if (! -e "$datafile") then
+            echo The file "$datafile" does not exist.
             goto getfile
         endif
     endif
@@ -320,12 +320,12 @@
     set ans=$<
     if  ("$ans" =~ y*) then
 	set ctype${multipart} = "$ctype"
-	set datafile${multipart} = $datafile
-	set encode${multipart} = $encode
+	set datafile${multipart} = "$datafile"
+	set encode${multipart} = "$encode"
 	set encodingprog${multipart} = "$encodingprog"
 	set cdescrip${multipart} = "$cdescrip"
 	set cid${multipart} = "$cid"
-	set isentity${multipart} = $isentity
+	set isentity${multipart} = "$isentity"
 	set cdescrip = "An object packed by metasend"
 	set isentity=0
 	unset ctype
@@ -339,7 +339,7 @@
             goto anotherpart
      endif
 else
-    if ($outputfile == "") then
+    if ("$outputfile" == "") then
       if (! $?to || ! $?subject || ! $?ctype || ! $?datafile) then
         echo metasend: in batch mode, if output is not directed to a file,-t, -s, -f, and -m are all required
         exit -1
@@ -359,12 +359,12 @@
         exit -1
       endif
     endif    
-    if (! -e  $datafile) then
-        echo metasend:  The file $datafile does not exist
+    if (! -e "$datafile") then
+        echo metasend:  The file "$datafile" does not exist
         exit -1
     endif
 #    if (! $?cc) set cc=""
-#     if ($ctype != $ctyperaw)  echo Double  quotes not allowed, using $ctype
+#    if ("$ctype" != "$ctyperaw") echo Double quotes not allowed, using "$ctype"
     if (! $?encode) then
         if ("$ctype" =~ text*) then
 	set encodingprog = "mimencode -q"
@@ -373,11 +373,11 @@
             set encodingprog = "mimencode -b"
             set encode = base64
         endif
-    else if ($encode == "base64") then
+    else if ("$encode" == "base64") then
         set encodingprog = "mimencode -b"
-    else if ($encode == "x-uue") then
+    else if ("$encode" == "x-uue") then
         set encodingprog = "uuencode mail-body"
-    else if ($encode == "7bit") then
+    else if ("$encode" == "7bit") then
         set encodingprog = cat
     else
         set encodingprog = "mimencode -q"
@@ -395,14 +395,22 @@
         endif
 endif
 set ctype${multipart} = "$ctype"
-set datafile${multipart} = $datafile
-set encode${multipart} = $encode
+set datafile${multipart} = "$datafile"
+set encode${multipart} = "$encode"
 set cdescrip${multipart} = "$cdescrip"
 set cid${multipart} = "$cid"
-set isentity${multipart} = $isentity
+set isentity${multipart} = "$isentity"
 set encodingprog${multipart} = "$encodingprog"
 
-set fname = ${METAMAIL_TMPDIR}/metasend.$$
+#  Generate file name:
+if ( -x /bin/mktemp ) then
+    set fname=`/bin/mktemp ${METAMAIL_TMPDIR}/metasend.XXXXXXX` || exit 1
+else if ( -x /usr/bin/mktemp ) then
+    set fname=`/usr/bin/mktemp ${METAMAIL_TMPDIR}/metasend.XXXXXXX` || exit 1
+else
+    set fname=${METAMAIL_TMPDIR}/metasend.$$
+    rm -rf $fname
+endif
 echo "MIME-Version: 1.0" > $fname
 if ($?to) then
     echo "To: " "$to" >> $fname
@@ -429,17 +437,26 @@
     echo "	boundary="\"$boundary\" >> $fname
     echo "" >> $fname
     if ($?preamblefile) then
-        cat $preamblefile >> $fname
+        cat "$preamblefile" >> $fname
     else
         echo "This is  a multimedia message in MIME  format.  If you are reading this" >> $fname
         echo "prefix, your mail reader does  not understand MIME.  You may wish" >> $fname
         echo "to look into upgrading to a newer version of  your mail reader." >> $fname
     endif
     set i=1
-    set junkfile=${METAMAIL_TMPDIR}/mmjunk.$$
-    while  ($multipart >= $i)
+
+    #  Generate temporary file name:
+    if ( -x /bin/mktemp ) then
+        set junkfile=`/bin/mktemp ${METAMAIL_TMPDIR}/mmjunk.XXXXXXX` || exit 1
+    else if ( -x /usr/bin/mktemp ) then
+        set junkfile=`/usr/bin/mktemp ${METAMAIL_TMPDIR}/mmjunk.XXXXXXX` || exit 1
+    else
+        set junkfile=${METAMAIL_TMPDIR}/mmjunk.$$
+        rm -rf $junkfile
+    endif
+    while  ("$multipart" >= $i)
 	echo "" >> $fname
-	echo --$boundary >> $fname
+	echo --"$boundary" >> $fname
 	echo set isentity=\$isentity$i > $junkfile
 	source $junkfile
 	if (! $isentity) then
@@ -463,27 +480,27 @@
     end
     rm $junkfile
     echo "" >> $fname
-    echo --${boundary}-- >> $fname
+    echo --"${boundary}"-- >> $fname
     echo "" >> $fname
 else 
     if (! $isentity) then
         echo "Content-ID: $cid"   >> $fname
-        echo "Content-type: " $ctype >> $fname
-        echo "Content-Description: " $cdescrip >> $fname
-        echo "Content-Transfer-Encoding: " $encode >> $fname
+        echo "Content-type: " "$ctype" >> $fname
+        echo "Content-Description: " "$cdescrip" >> $fname
+        echo "Content-Transfer-Encoding: " "$encode" >> $fname
     endif
     echo  "" >> $fname
-    $encodingprog < $datafile >> $fname
+    $encodingprog < "$datafile" >> $fname
     # Ensure last line has trailing carriage return
     echo "" >> $fname
 endif
-if ($outputfile == "") then
-    if ($batchmode == 0) echo -n "Delivering mail, please wait...  "
-    splitmail -s $splitsize -d $fname
+if ("$outputfile" == "") then
+    if ("$batchmode" == 0) echo -n "Delivering mail, please wait...  "
+    splitmail -s "$splitsize" -d "$fname"
     if (! $status) then
-        if ($batchmode == 0) echo "Mail delivery apparently succeeded."
+        if ("$batchmode" == 0) echo "Mail delivery apparently succeeded."
         rm $fname
-    else if ($MustDelete == 1) then
+    else if ("$MustDelete" == 1) then
         echo Mail delivery failed
         rm $fname
         exit -1
@@ -492,7 +509,7 @@
         exit -1
     endif
 else
-    mv $fname $outputfile
+    mv $fname "$outputfile"
     if ($status) exit -1
 endif
 exit 0
diff -d -r -u -P mm2.7.orig/src/bin/patch-metamail mm2.7/src/bin/patch-metamail
--- mm2.7.orig/src/bin/patch-metamail	Mon Jun 15 00:30:47 1998
+++ mm2.7/src/bin/patch-metamail	Sat Jun 20 23:18:20 1998
@@ -5,40 +5,53 @@
 set DIRNAME=pub/nsb
 set PREFIX="mm.patch."
 
+if (! $?METAMAIL_TMPDIR) then
+    set METAMAIL_TMPDIR=/tmp
+endif
+
 if ($#argv < 2 || $#argv > 5) then
 	echo Usage:  patch-metamail source-tree-root patch-number [hostname [dirname [prefix]]]
 	exit -1
 endif
 
-set TREEROOT=$1
-set PATCHNUMBER=$2
-if ($#argv > 2) set HOSTNAME=$3
-if ($#argv > 3) set DIRNAME=$4
-if ($#argv > 4) set PREFIX=$5
+set TREEROOT="$1"
+set PATCHNUMBER="$2"
+if ($#argv > 2) set HOSTNAME="$3"
+if ($#argv > 3) set DIRNAME="$4"
+if ($#argv > 4) set PREFIX="$5"
 	
 echo WARNING:  This program, if allowed to do so, will attempt to 
 echo install a PATCH file for your metamail sources which are rooted 
-echo in the directory $TREEROOT.
+echo in the directory "$TREEROOT".
 echo ""
 echo It will use a patch file that it retrieves via anonymous ftp
-echo from the host $HOSTNAME, in the directory $DIRNAME, 
-echo with filenames starting with ${PREFIX}.
+echo from the host "$HOSTNAME", in the directory "$DIRNAME", 
+echo with filenames starting with "${PREFIX}".
 echo ""
 echo -n "Do you want to install the patch in directory $TREEROOT [y/n] ? "
 set ans=$<
-if ($ans == "y" || $ans == "Y") then
-    cd $TREEROOT
+if ("$ans" == "y" || "$ans" == "Y") then
+    cd "$TREEROOT"
     set ident=`whoami`@`hostname`
-    echo Using anonymous ftp with password $ident
-    ftp -n <<!
-open $HOSTNAME
-user anonymous $ident
-cd $DIRNAME
-binary
-get ${PREFIX}${PATCHNUMBER}
-quit
-!
-    patch -p < ${PREFIX}${PATCHNUMBER}
+    #  Generate temporary file name:
+    if ( -x /bin/mktemp ) then
+        set TmpFtp=`/bin/mktemp ${METAMAIL_TMPDIR}/mm.ftp.XXXXXXX` || exit 1
+    else if ( -x /usr/bin/mktemp ) then
+        set TmpFtp=`/usr/bin/mktemp ${METAMAIL_TMPDIR}/mm.ftp.XXXXXXX` || exit 1
+    else
+        set TmpFtp=${METAMAIL_TMPDIR}/mm.ftp.$$
+        rm -rf $TmpFtp
+    endif
+    echo open "$HOSTNAME" > $TmpFtp
+    echo user anonymous "$ident" >> $TmpFtp
+    echo cd "$DIRNAME" >> $TmpFtp
+    echo binary >> $TmpFtp
+    echo get "${PREFIX}${PATCHNUMBER}" >> $TmpFtp
+    echo quit >> $TmpFtp
+    echo Using anonymous ftp with password "$ident"
+    ftp -n < $TmpFtp
+    rm -f $TmpFtp
+    patch -p < "${PREFIX}${PATCHNUMBER}"
 else
 	echo Patch not installed
 endif
diff -d -r -u -P mm2.7.orig/src/bin/rcvAppleSingle mm2.7/src/bin/rcvAppleSingle
--- mm2.7.orig/src/bin/rcvAppleSingle	Mon Jun 15 00:30:47 1998
+++ mm2.7/src/bin/rcvAppleSingle	Sat Jun 20 14:08:30 1998
@@ -13,7 +13,7 @@
 # Written by Patrik Faltstrom, paf@nada.kth.se, may 1993
 #
 
-FILENAME=$1
+FILENAME="$1"
 
 #
 # If $AFPDIR environment variable is set, all Macintosh filenames
@@ -31,12 +31,12 @@
    exit 1
 fi
 
-echo $NAME | grep '^/' > /dev/null
+echo "$NAME" | grep '^/' > /dev/null
 if [ $? = 1 ]; then
-  NAME=$AFPDIR/$NAME
+  NAME="$AFPDIR/$NAME"
 fi
 
-cvt2cap $FILENAME $NAME
+cvt2cap "$FILENAME" "$NAME"
 echo "Saved AppleMacintosh file as $NAME"
 exit 0
 
diff -d -r -u -P mm2.7.orig/src/bin/showaudio mm2.7/src/bin/showaudio
--- mm2.7.orig/src/bin/showaudio	Mon Jun 15 00:30:47 1998
+++ mm2.7/src/bin/showaudio	Sat Jun 20 15:01:55 1998
@@ -33,7 +33,7 @@
 set ORG="Bellcore"
 set STDINPUT=0
 if ("$1" == "-p") then
-    set AUDIOPHONE=$2
+    set AUDIOPHONE="$2"
     shift
     shift
 endif
@@ -73,13 +73,13 @@
     echo ""
     echo -n "Which do you prefer (1 or 2)? "
     set ans=$<
-    if ($ans == 2)  then
+    if ("$ans" == 2)  then
 	echo "OK, we'll use the telephone..."
 	set AUDIOPHONEFORCE=1
 	echo "In the future, you can avoid this question by setting the environment variable"
 	echo "AUDIOPHONEFORCE to 1"
 	goto playphone
-    else if ($ans == 1) then
+    else if ("$ans" == 1) then
     	echo "OK, Attempting to play the audio using your computer's speaker.."
     	set AUDIOSPEAKERFORCE=1
 	echo "In the future, you can avoid this question by setting the environment variable"
@@ -93,8 +93,8 @@
 set audiohost=$thishost
 if ($?DISPLAY) then
     set audiohost=`echo $DISPLAY | sed -e 's/:.*//'`
-    if ($audiohost == "unix") set audiohost=$thishost
-    if ($audiohost == "") set audiohost=$thishost
+    if ("$audiohost" == "unix") set audiohost=$thishost
+    if ("$audiohost" == "") set audiohost=$thishost
 endif
 if ($?AUDIOHOST) then
 	set audiohost=$AUDIOHOST
@@ -127,9 +127,18 @@
     if ($#argv >= 1) then
 	exec /usr/sbin/sfplay -i mu-law chan 1 rate 8000 end $*
     else
-	cat > ${METAMAIL_TMPDIR}/audio.$$
-	/usr/sbin/sfplay -i mu-law chan 1 rate 8000 end ${METAMAIL_TMPDIR}/audio.$$
-	rm ${METAMAIL_TMPDIR}/audio.$$
+	# Generate temporary file name:
+	if ( -x /bin/mktemp ) then
+	    set TmpAudio=`/bin/mktemp ${METAMAIL_TMPDIR}/audio.XXXXXXX` || exit 1
+	else if ( -x /usr/bin/mktemp ) then
+	    set TmpAudio=`/usr/bin/mktemp ${METAMAIL_TMPDIR}/audio.XXXXXXX` || exit 1
+	else
+	    set TmpAudio=${METAMAIL_TMPDIR}/audio.$$
+	    rm -rf $TmpAudio
+	endif
+	cat > $TmpAudio
+	/usr/sbin/sfplay -i mu-law chan 1 rate 8000 end $TmpAudio
+	rm $TmpAudio
 	exit 0
     endif
 else if (-d /usr/sony) then
@@ -198,7 +207,15 @@
 echo ""
 if (! $?MM_NOTTTY) set MM_NOTTTY=0
 if ($MM_NOTTTY == 1) then
-    set fname=/tmp/mm.aud.$$
+    # Generate unique file name:
+    if ( -x /bin/mktemp ) then
+        set fname=`/bin/mktemp /tmp/mm.aud.XXXXXXX` || exit 1
+    else if ( -x /usr/bin/mktemp ) then
+        set fname=`/usr/bin/mktemp /tmp/mm.aud.XXXXXXX` || exit 1
+    else
+        set fname=/tmp/mm.aud.$$
+        rm -rf $fname
+    endif
 else
     echo -n "Do you want to write the audio out to a file [y] ? "
     set ANS=$<
@@ -206,7 +223,7 @@
     echo -n "File name:"
     set fname=$<
 endif
-cp $1 $fname
-if ($status == 0) echo Wrote raw audio file: $fname
+cp "$1" "$fname"
+if ($status == 0) echo Wrote raw audio file: "$fname"
 exit 0
 
diff -d -r -u -P mm2.7.orig/src/bin/showexternal mm2.7/src/bin/showexternal
--- mm2.7.orig/src/bin/showexternal	Mon Jun 15 00:30:47 1998
+++ mm2.7/src/bin/showexternal	Sat Jun 20 23:20:49 1998
@@ -40,14 +40,14 @@
 endsw
 set bodyfile="$1"
 set atype=`echo $2 | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
-set name=$3
+set name="$3"
 if ($#argv > 3) then
     set site="$4"
 else 
     set site=""
 endif
 if ($#argv > 4) then
-    set dir=$5
+    set dir="$5"
 else
     set dir=""
 endif
@@ -62,10 +62,10 @@
     set server=""
 endif
 
-if ("$server" == "" && $atype == "mail-server") then
+if ("$server" == "" && "$atype" == "mail-server") then
 # Backward compatibility with some broken stuff
-    set server=${name}@${site}
-    echo WARNING -- old style mailserver syntax, using server $server
+    set server="${name}@${site}"
+    echo WARNING -- old style mailserver syntax, using server "$server"
 endif
 
 set ctype="`grep -i content-type: $bodyfile | sed -e 's/............: //'`"
@@ -75,6 +75,10 @@
 set pass=""
 set TMPDIR=${METAMAIL_TMPDIR}/XXXternal.$$
 mkdir $TMPDIR
+if ( $status != 0 ) then
+    echo Error creating temporary directory
+    exit 1
+endif
 pushd $TMPDIR
 set NEWNAME="mm.ext.$$"
 set NEEDSCONFIRMATION=1
@@ -90,7 +94,16 @@
 	echo automatically using  the FTP protocol to a site on the network.
 	breaksw
     case mail-server:  
-	cat > ${METAMAIL_TMPDIR}/ext.junk.$$ <<!
+	#  Generate temporary file name:
+	if ( -x /bin/mktemp ) then
+	    set TmpExtJunk=`/bin/mktemp ${METAMAIL_TMPDIR}/ext.junk.XXXXXXX` || exit 1
+	else if ( -x /usr/bin/mktemp ) then
+	    set TmpExtJunk=`/usr/bin/mktemp ${METAMAIL_TMPDIR}/ext.junk.XXXXXXX` || exit 1
+	else
+	    set TmpExtJunk=${METAMAIL_TMPDIR}/ext.junk.$$
+	    rm -rf $TmpExtJunk
+	endif
+	cat > $TmpExtJunk <<!
 This mail message contains a POINTER (reference) to data that is 
 not included in the message itself.  Rather, the data can be retrieved 
 by sending a special mail message to a mail server on the network.
@@ -102,13 +115,13 @@
 This is the message that will be sent if you choose to go ahead and
 retreive the external data:
 
-Subject: Automated Mail Server Request
-To: ${server}
-
 !
-	sed -e 1,/^\$/d < $bodyfile >> ${METAMAIL_TMPDIR}/ext.junk.$$
-	${METAMAIL_PAGER} ${METAMAIL_TMPDIR}/ext.junk.$$
-	rm ${METAMAIL_TMPDIR}/ext.junk.$$
+	echo Subject: Automated Mail Server Request >> $TmpExtJunk
+	echo To: "$server" >> $TmpExtJunk
+	echo "" >> $TmpExtJunk
+	sed -e 1,/^\$/d < $bodyfile >> $TmpExtJunk
+	${METAMAIL_PAGER} $TmpExtJunk
+	rm $TmpExtJunk
 	breaksw
     default:
 	# IGNORE ALL THE OTHERS -- AUTOMATIC FOR LOCAL-FILE, AFS.
@@ -157,17 +170,26 @@
 	else
 	    set MODECMD="type $mode"
 	endif
+	#  Generate temporary file name:
+	if ( -x /bin/mktemp ) then
+	    set TmpFtp=`/bin/mktemp ${METAMAIL_TMPDIR}/mm.ftp.XXXXXXX` || exit 1
+	else if ( -x /usr/bin/mktemp ) then
+	    set TmpFtp=`/usr/bin/mktemp ${METAMAIL_TMPDIR}/mm.ftp.XXXXXXX` || exit 1
+	else
+	    set TmpFtp=${METAMAIL_TMPDIR}/mm.ftp.$$
+	    rm -rf $TmpFtp
+	endif
+	echo open "$site" > $TmpFtp
+	echo user "$username" "$pass" >> $TmpFtp
+	echo "$DIRCMD" >> $TmpFtp
+	echo "$MODECMD" >> $TmpFtp
+	echo get "$name" "$NEWNAME" >> $TmpFtp
+	echo quit >> $TmpFtp
 	echo OBTAINING MESSAGE BODY USING FTP
-	echo SITE: $site USER $username
-	$FTP -n <<!
-open $site
-user $username $pass
-$DIRCMD
-$MODECMD
-get $name $NEWNAME
-quit
-!
-	if (! -e $NEWNAME) then
+	echo SITE: "$site" USER "$username"
+	$FTP -n < $TmpFtp
+	rm -f $TmpFtp
+	if (! -e "$NEWNAME") then
 	    echo FTP failed.
 	    cd ${METAMAIL_TMPDIR}
 	    rm -rf $TMPDIR
@@ -176,14 +198,14 @@
 	breaksw
     case afs:
     case local-file:
-	if (! -e $name) then
+	if (! -e "$name") then
 	    echo local file not found
 	    cd ${METAMAIL_TMPDIR}
 	    rm -rf $TMPDIR
 	    exit -1
 	endif
-    	set NEWNAME=$name
-	echo GETTING BODY FROM FILE NAMED: $NEWNAME
+    	set NEWNAME="$name"  # Note that this is not trusted data...
+	echo GETTING BODY FROM FILE NAMED: "$NEWNAME"
 	breaksw
     case mail-server:  # A very special case
 	if ("$bodyfile" == "") then
@@ -192,12 +214,12 @@
 	    rm -rf $TMPDIR
 	    exit -1
 	endif
-	echo Subject: Automated Mail Server Request > $NEWNAME
-	echo To: ${server} >> $NEWNAME
-	echo "" >> $NEWNAME
-	sed -e 1,/^\$/d < $bodyfile >> $NEWNAME
-	echo "" >> $NEWNAME
-	/usr/lib/sendmail -t  < $NEWNAME
+	echo Subject: Automated Mail Server Request > "$NEWNAME"
+	echo To: ${server} >> "$NEWNAME"
+	echo "" >> "$NEWNAME"
+	sed -e 1,/^\$/d < $bodyfile >> "$NEWNAME"
+	echo "" >> "$NEWNAME"
+	/usr/lib/sendmail -t  < "$NEWNAME"
 	if ($status) then
 	    echo sendmail failed
 	    cd ${METAMAIL_TMPDIR}
@@ -206,7 +228,7 @@
 	endif
 	cd ${METAMAIL_TMPDIR}
 	rm -rf $TMPDIR
-	echo Your $ctype data has been requested from a mail server.
+	echo Your "$ctype" data has been requested from a mail server.
 	exit 0
     default:
 	echo UNRECOGNIZED ACCESS-TYPE
@@ -214,19 +236,19 @@
 	rm -rf $TMPDIR
 	exit -1
 endsw
-if ($cenc == base64) then
-	mimencode -u -b < $NEWNAME > OUT
-	mv OUT $NEWNAME
-else if ($cenc == quoted-printable) then
-	mimencode -u -q < $NEWNAME > OUT
-	mv OUT $NEWNAME
+if ("$cenc" == base64) then
+	mimencode -u -b < "$NEWNAME" > OUT
+	mv OUT "$NEWNAME"
+else if ("$cenc" == quoted-printable) then
+	mimencode -u -q < "$NEWNAME" > OUT
+	mv OUT "$NEWNAME"
 endif
 
 popd
-if ($atype == "local-file") then
-    metamail -p  -b -c "$ctype" $NEWNAME
+if ("$atype" == "local-file") then
+    metamail -p  -b -c "$ctype" "$NEWNAME"
 else
-    metamail -p -b -c "$ctype" $TMPDIR/$NEWNAME
+    metamail -p -b -c "$ctype" "$TMPDIR/$NEWNAME"
 endif
 
 if ($status) then
@@ -236,14 +258,14 @@
 	exit -1
 endif
 
-if ($NEWNAME != $name) then
+if ("$NEWNAME" != "$name") then
 	echo ""
-	echo The data just displayed is stored in the file $TMPDIR/$NEWNAME
+	echo The data just displayed is stored in the file "$TMPDIR/$NEWNAME"
 	echo "Do you want to delete it?"
-	rm -i $TMPDIR/$NEWNAME
+	rm -i "$TMPDIR/$NEWNAME"
 endif
 
-if (! -e ${TMPDIR}/${NEWNAME}) then
+if (! -e "${TMPDIR}/${NEWNAME}") then
     cd ${METAMAIL_TMPDIR}
     rmdir $TMPDIR
 endif
diff -d -r -u -P mm2.7.orig/src/bin/showpartial mm2.7/src/bin/showpartial
--- mm2.7.orig/src/bin/showpartial	Mon Jun 15 00:30:47 1998
+++ mm2.7/src/bin/showpartial	Sat Jun 20 14:25:55 1998
@@ -14,78 +14,84 @@
 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
+@ partnum = "$3"
+if ($#argv == 3 || "$4" == "") then
     set totalnum=-1
 else
     @ totalnum = "$4"
 endif
 
-if (! -d  $TREEROOT)  then
+if ( -d $TREEROOT)  then
+    if (! -o $TREEROOT) then
+        echo Error: You do not own $TREEROOT
+        exit -1
+    endif
+else
     mkdir $TREEROOT
     if ($status) then 
         echo mkdir $TREEROOT failed
         exit -1
     endif
 endif
-if (! -d ${TREEROOT}/$id) then 
-    mkdir ${TREEROOT}/$id
+if (! -d "${TREEROOT}/$id") then 
+    mkdir "${TREEROOT}/$id"
     if ($status) then 
-        echo mkdir ${TREEROOT}/$id failed
+        echo mkdir "${TREEROOT}/$id" failed
         exit -1
     endif
 endif
-cp $file ${TREEROOT}/$id/$partnum
+cp "$file" "${TREEROOT}/$id/$partnum"
 if ($status) then 
-    echo cp $file ${TREEROOT}/$id/$partnum failed
+    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`
+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
+    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
+# Note that this could very well constitute a security risk...
+# 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 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
+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
+    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
+    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
+    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.
+    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.
+        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
diff -d -r -u -P mm2.7.orig/src/bin/showpicture mm2.7/src/bin/showpicture
--- mm2.7.orig/src/bin/showpicture	Mon Jun 15 00:30:47 1998
+++ mm2.7/src/bin/showpicture	Sat Jun 20 14:27:26 1998
@@ -23,7 +23,7 @@
 set X_VIEWER="xloadimage -view -quiet -geometry +1+1"
 # set X_VIEWER="xv -geometry +1+1"
 endif
-if ($1 == "-viewer" && $#argv > 1) then
+if ("$1" == "-viewer" && $#argv > 1) then
     set X_VIEWER = "$2"
     shift
     shift
@@ -40,7 +40,15 @@
     echo be able to see the picture properly.
     echo ""
     if ($MM_NOTTTY) then
-        set fname=${METAMAIL_TMPDIR}/sp.$$
+        #  Generate file name:
+        if ( -x /bin/mktemp ) then
+            set fname=`/bin/mktemp ${METAMAIL_TMPDIR}/sp.XXXXXXX` || exit 1
+        else if ( -x /usr/bin/mktemp ) then
+            set fname=`/usr/bin/mktemp ${METAMAIL_TMPDIR}/sp.XXXXXXX` || exit 1
+        else
+            set fname=${METAMAIL_TMPDIR}/sp.$$
+            rm -rf $fname
+        endif
         echo "The picture is being automatically stored in the file $fname"
         echo "If you do not want this file, please delete it."
     else
@@ -50,20 +58,28 @@
         while ( 1 == 1)
             echo -n "File name:"
             set fname=$<
-            if (! -f $fname) then
+            if (! -f "$fname") then
                 break
             else
                 echo "$fname already exists. Try again"
             endif
         end
     endif
-    cp $1 $fname
-    if ($status == 0) echo Wrote file $fname
+    cp "$1" "$fname"
+    if ($status == 0) echo Wrote file "$fname"
     exit 0
 endif
 
 if ($#argv == 0) then
-    set SQUIRREL=${METAMAIL_TMPDIR}/sp.$$
+    #  Generate file name:
+    if ( -x /bin/mktemp ) then
+        set SQUIRREL=`/bin/mktemp ${METAMAIL_TMPDIR}/sp.XXXXXXX` || exit 1
+    else if ( -x /usr/bin/mktemp ) then
+        set SQUIRREL=`/usr/bin/mktemp ${METAMAIL_TMPDIR}/sp.XXXXXXX` || exit 1
+    else
+        set SQUIRREL=${METAMAIL_TMPDIR}/sp.$$
+        rm -rf $SQUIRREL
+    endif
     cat > $SQUIRREL
 else
     set SQUIRREL="$*"
diff -d -r -u -P mm2.7.orig/src/bin/sun-audio-file mm2.7/src/bin/sun-audio-file
--- mm2.7.orig/src/bin/sun-audio-file	Mon Jun 15 00:30:47 1998
+++ mm2.7/src/bin/sun-audio-file	Sat Jun 20 14:28:11 1998
@@ -12,7 +12,7 @@
 	exit 1
 endif
 
-uudecode -o $fn < $1
+uudecode -o $fn < "$1"
 
 audiotool $fn
-rm -f $fn $1
+rm -f $fn "$1"
diff -d -r -u -P mm2.7.orig/src/bin/sun-message.csh mm2.7/src/bin/sun-message.csh
--- mm2.7.orig/src/bin/sun-message.csh	Mon Jun 15 00:30:47 1998
+++ mm2.7/src/bin/sun-message.csh	Sat Jun 20 14:29:41 1998
@@ -8,6 +8,10 @@
 # $2 is untrustworthy data. Quote it.
 #
 mkdir /tmp/decode.$$
+if ( $status != 0 ) then
+    echo "Error: cannot create temporary directory"
+    exit 1
+endif
 cd /tmp/decode.$$
 
 if (! $?METAMAIL_PAGER) then
@@ -21,7 +25,7 @@
 	    exit 1
     endif
 
-    uudecode -o $fn $1
+    uudecode -o $fn "$1"
 
     echo "The following file was uudecoded:"
     echo ""
@@ -40,21 +44,21 @@
 	echo -n "Which do you prefer (1 - 3)? [$defans] "
 
 	set ans = $< 
-	if (x$ans == x) then
+	if ("x$ans" == x) then
 	    set ans = $defans
 	endif
-	if ($ans == 3)  then
-	    rm $1
+	if ("$ans" == 3)  then
+	    rm "$1"
 	    cd /tmp; /bin/rm -rf /tmp/decode.$$
 	    exit 0
-	else if ($ans == 1) then
+	else if ("$ans" == 1) then
 	    ${METAMAIL_PAGER} $fn
-	else if ($ans == 2) then
+	else if ("$ans" == 2) then
 	    set nfn = ""
 	    echo -n "Save as: $HOME/"
 	    set nfn = $<
-	    if (x$nfn != x) then
-		/bin/cp $fn ${HOME}/$nfn
+	    if ("x$nfn" != x) then
+		/bin/cp $fn "${HOME}/$nfn"
 	    else
 		echo "Not Saved."
 	    endif
@@ -64,7 +68,7 @@
 	set defans = "3"
     end
 else
-    ${METAMAIL_PAGER} $1
+    ${METAMAIL_PAGER} "$1"
 endif
 
 
diff -d -r -u -P mm2.7.orig/src/bin/sun-to-mime mm2.7/src/bin/sun-to-mime
--- mm2.7.orig/src/bin/sun-to-mime	Mon Jun 15 00:30:47 1998
+++ mm2.7/src/bin/sun-to-mime	Sat Jun 20 14:31:12 1998
@@ -8,10 +8,19 @@
     set METAMAIL_TMPDIR=/tmp
 endif
 
-set TMPFILE=${METAMAIL_TMPDIR}/suntomime.$$
+#  Generate temporary file name:
+if ( -x /bin/mktemp ) then
+    set TMPFILE=`/bin/mktemp ${METAMAIL_TMPDIR}/suntomime.XXXXXXX` || exit 1
+else if ( -x /usr/bin/mktemp ) then
+    set TMPFILE=`/usr/bin/mktemp ${METAMAIL_TMPDIR}/suntomime.XXXXXXX` || exit 1
+else
+    set TMPFILE=${METAMAIL_TMPDIR}/suntomime.$$
+    rm -rf $TMPFILE
+endif
+
 echo "Content-type: multipart/mixed; boundary=--------" > $TMPFILE
 echo "" >> $TMPFILE
-sed -e 's/X-Sun-Data-Type:/Content-type:/' >> $TMPFILE < $1
+sed -e 's/X-Sun-Data-Type:/Content-type:/' >> $TMPFILE < "$1"
 echo "------------" >> $TMPFILE
 #metamail -d -z $TMPFILE
 metamail -z $TMPFILE
diff -d -r -u -P mm2.7.orig/src/bin/sun2mime mm2.7/src/bin/sun2mime
--- mm2.7.orig/src/bin/sun2mime	Mon Jun 15 00:30:47 1998
+++ mm2.7/src/bin/sun2mime	Sat Jun 20 14:31:40 1998
@@ -9,7 +9,16 @@
 if [ x$METAMAIL_TMPDIR = x ]; then
     METAMAIL_TMPDIR=/tmp
 fi
-TMPFILE=${METAMAIL_TMPDIR}/suntomime.$$
+
+#  Generate temporary file name:
+if [ -x /bin/mktemp ] ; then
+    TMPFILE=`/bin/mktemp ${METAMAIL_TMPDIR}/suntomime.XXXXXXX` || exit 1
+elif [ -x /usr/bin/mktemp ] ; then
+    TMPFILE=`/usr/bin/mktemp ${METAMAIL_TMPDIR}/suntomime.XXXXXXX` || exit 1
+else
+    TMPFILE=${METAMAIL_TMPDIR}/suntomime.$$
+    rm -rf $TMPFILE
+fi
 
 /bin/nawk '
   BEGIN { printf("Content-type: multipart/mixed; boundary=--------\n\n")
@@ -36,7 +45,7 @@
       print
   }
   END { printf("----------\n") }
-' $1 > $TMPFILE
+' "$1" > $TMPFILE
 
 metamail -z $TMPFILE
 rm -f $TMPFILE
diff -d -r -u -P mm2.7.orig/src/metamail/mailto.c mm2.7/src/metamail/mailto.c
--- mm2.7.orig/src/metamail/mailto.c	Mon Jun 15 00:30:47 1998
+++ mm2.7/src/metamail/mailto.c	Sat Jun 20 16:57:20 1998
@@ -61,6 +61,7 @@
 #endif
 
 extern char *malloc(), *realloc(), *index(), *getmyname();
+extern FILE *Fopen();
 struct mailpart *CreateNewPart();
 
 /* The main data structure for the multiple parts of the mail */
@@ -208,7 +209,7 @@
     	pager = getenv("PAGER");
 
     strcpy(TmpName, tmpname());
-    fp = fopen(TmpName, "w");
+    fp = Fopen(TmpName, "w");
     if (!fp) fp = stdout;
     fprintf(fp, "The following tilde escapes are BSD-mail-compatible:\n");
     fprintf(fp, "~? Show help on tilde escapes\n");
@@ -594,7 +595,7 @@
     }
     FirstPart = NewPart();
     CurrentPart = FirstPart;
-    fpout = fopen(CurrentPart->filename, "w");
+    fpout = Fopen(CurrentPart->filename, "w");
     if (!fpout) {
         fprintf(stderr, "mailto:  Can't open temporary file %s\n", CurrentPart->filename);
         cleanexit(-1);
@@ -681,7 +682,7 @@
                     CurrentPart->next = NewPart();
                     CurrentPart->next->prev = CurrentPart;
                     CurrentPart = CurrentPart->next;
-                    fpout = fopen(CurrentPart->filename, "w");
+                    fpout = Fopen(CurrentPart->filename, "w");
                     if (!fpout) {
                         fprintf(stderr, "mailto:  Can't open temporary file %s\n", CurrentPart->filename);
                         cleanexit(-1);
@@ -720,7 +721,7 @@
                     CurrentPart = CurrentPart->next;
                     CurrentPart->istext = 0;
                     CurrentPart->content_type = "message/rfc822";
-                    fpout = fopen(CurrentPart->filename, "w");
+                    fpout = Fopen(CurrentPart->filename, "w");
                     if (!fpout) {
                         fprintf(stderr, "mailto: Cannot open temporary file %s\n", CurrentPart->filename);
                         break;
@@ -732,7 +733,7 @@
                     CurrentPart->next = NewPart();
                     CurrentPart->next->prev = CurrentPart;
                     CurrentPart = CurrentPart->next;
-                    fpout = fopen(CurrentPart->filename, "w");
+                    fpout = Fopen(CurrentPart->filename, "w");
                     if (!fpout) {
                         fprintf(stderr, "mailto:  Can't open temporary file %s\n", CurrentPart->filename);
                         cleanexit(-1);
@@ -811,11 +812,11 @@
                     char Cmd[TMPFILE_NAME_SIZE + 15];
                     char *s=tmpname();
                     fclose(fpout);
-                    fptmp = fopen(s, "w");
+                    fptmp = Fopen(s, "w");
                     WriteOutMessage(fptmp, ToList, Subject, CCList, FirstPart);
                     TempCloseStyles(fptmp);
                     fclose(fptmp);
-                    fpout = fopen(CurrentPart->filename, "a");
+                    fpout = Fopen(CurrentPart->filename, "a");
                     if (!fpout) {
                         fprintf(stderr, "mailto:  Can't open temporary file %s\n", CurrentPart->filename);
                         cleanexit(-1);
@@ -899,7 +900,7 @@
                     char *fname;
                     fclose(fpout);
                     fname = start;
-                    fptmp = fopen(fname, "w");
+                    fptmp = Fopen(fname, "w");
                     WriteOutMessage(fptmp, ToList, Subject, CCList, FirstPart);
                     TempCloseStyles(fptmp);
                     if(fclose(fptmp)) {
@@ -907,7 +908,7 @@
                     } else {
                         printf("Wrote draft to %s\n", fname);
                     }
-                    fpout = fopen(CurrentPart->filename, "a");
+                    fpout = Fopen(CurrentPart->filename, "a");
                     if (!fpout) {
                         fprintf(stderr, "mailto:  Can't open temporary file %s\n", CurrentPart->filename);
                         cleanexit(-1);
@@ -972,7 +973,7 @@
                     CurrentPart = CurrentPart->next;
                     CurrentPart->istext = 0;
                     CurrentPart->content_type = "message/rfc822";
-                    fpout = fopen(CurrentPart->filename, "w");
+                    fpout = Fopen(CurrentPart->filename, "w");
                     if (!fpout) {
                         fprintf(stderr, "mailto: Cannot open temporary file %s\n", CurrentPart->filename);
                         break;
@@ -994,7 +995,7 @@
                     CurrentPart->next = NewPart();
                     CurrentPart->next->prev = CurrentPart;
                     CurrentPart = CurrentPart->next;
-                    fpout = fopen(CurrentPart->filename, "w");
+                    fpout = Fopen(CurrentPart->filename, "w");
                     if (!fpout) {
                         fprintf(stderr, "mailto:  Can't open temporary file %s\n", CurrentPart->filename);
                         cleanexit(-1);
@@ -1476,7 +1477,7 @@
     char DeadFile[1000];
 
     sprintf(DeadFile, "%s/dead.letter", gethome());
-    fp = fopen(DeadFile, "w");
+    fp = Fopen(DeadFile, "w");
     WriteOutMessage(fp, ToList, Subject, CCList, FirstPart);
     if(fclose(fp)) {
         perror("Could not write ~/dead.letter\n");
@@ -1776,7 +1777,7 @@
             printf("Cannot read %s, data insertion cancelled\n", sdum);
             return(NULL);
         }
-        fpo = fopen(mp->filename, "w");
+        fpo = Fopen(mp->filename, "w");
         if (!fpo) {
             printf("Cannot open temporary file, data insertion cancelled\n");
             return(NULL);
@@ -1794,7 +1795,7 @@
                 int ct;
                 printf("\nEnter the MIME Content-type value for the data from file %s\n    (type '?' for a list of locally-valid content-types): ", sdum);
                 fflush(stdout);
-                gets(LineBuf);
+                fgets(LineBuf, sizeof(LineBuf), stdin);
                 if (index(LineBuf, '/')) {
                     char lc[100], *s, AnsBuf[100];
                     strcpy(lc, LineBuf);
@@ -1812,7 +1813,7 @@
                     }
                     if (mc) break;
                     printf("The MIME content-type '%s' is not listed in your local mailcap files,\nand may not be a valid MIME type.  Do you want to use it anyway [no] ? ", LineBuf);
-                    s = gets(AnsBuf);
+                    s = fgets(AnsBuf, sizeof(AnsBuf), stdin);
                     while (s && *s && isspace((unsigned char) *s)) ++s;
                     if (s && (*s == 'y' || *s == 'Y')) break;
                     continue;
@@ -1939,7 +1940,7 @@
             mp->encoding_type_needed = ENC_NONE;
         }
         newfilename = tmpname();
-        fpout = fopen(newfilename, "w");
+        fpout = Fopen(newfilename, "w");
         if (!fpout) {
             fprintf(stderr, "Cannot open file %s for writing, no data included.\n", newfilename);
             free(CmdBuf);
@@ -2109,7 +2110,7 @@
              ContainsEightBitChar(FirstPart->filename)) {
             FirstPart->encoding_type_needed = ENC_QP;
         }
-        fpout = fopen(FirstPart->filename, "a");
+        fpout = Fopen(FirstPart->filename, "a");
         free(CmdBuf);
         free(CmdBuf2);
         return;
@@ -2159,7 +2160,7 @@
         lastmp = mp;
         mp = mp->next;
     }
-    fpout = fopen(lastmp->filename, "a");
+    fpout = Fopen(lastmp->filename, "a");
     free(CmdBuf);
     free(CmdBuf2);
 }
diff -d -r -u -P mm2.7.orig/src/metamail/metamail.c mm2.7/src/metamail/metamail.c
--- mm2.7.orig/src/metamail/metamail.c	Mon Jun 15 00:30:47 1998
+++ mm2.7/src/metamail/metamail.c	Sat Jun 20 16:54:29 1998
@@ -112,6 +112,7 @@
 
 char *FindParam();
 extern FILE *popen();
+extern FILE *Fopen();
 static char *nomem = "Out of memory!";
 static char *mmversion = MM_VERSTRING;
 static char *NoAskDefault = "text,text/plain,text/richtext";
@@ -580,7 +581,7 @@
                                 int overwriteans = -1;
                                 do {
                                     printf("File %s exists.  Do you want to overwrite it (y/n) ?\n", Fname);
-                                    s = gets(AnsBuf);
+                                    s = fgets(AnsBuf, sizeof(AnsBuf), stdin);
                                     if (!s) {
                                         overwriteans = 0;
                                     } else {
@@ -646,7 +647,7 @@
         if (Fname[0] == 0 || Fname[0] == '\n') {
             ConsumeRestOfPart(NULL);
         } else {
-            fp = fopen(Fname, WRITE_BINARY);
+            fp = Fopen(Fname, WRITE_BINARY);
             if (!fp) ExitWithError("Cannot open temporary file");
             TranslateInputToOutput(InputFP, fp, EncodingCode, ContentType);
             ecode = fclose(fp);
@@ -961,7 +962,7 @@
         /* Create it, ugh.  Also needs to affect later command. */
         MkTmpFileName(TmpName);
         DeleteSourceFileWhenDone = 1;
-        fptmp = fopen(TmpName, WRITE_BINARY);
+        fptmp = Fopen(TmpName, WRITE_BINARY);
         if (!fptmp) ExitWithError("Can't open temporary file\n");
         while (fgets(LineBuf, LINE_BUF_SIZE, stdin)) {
             fputs(LineBuf, fptmp);
@@ -1195,7 +1196,7 @@
 {
     int j;
     FILE *outfp;
-    outfp = fopen(SquirrelFile, WRITE_BINARY);
+    outfp = Fopen(SquirrelFile, WRITE_BINARY);
     if (!outfp) {
         fprintf(stderr, "Cannot open %s to squirrel away a portion of a multipart/alternative\n", SquirrelFile);
         return(-1);
@@ -1799,7 +1800,7 @@
     nameBuf[(cp - def) + 4] = 0;
     cp++;               /* Now points to value part of environment string. */
 
-    if ((envFile = fopen(nameBuf, "w")) == NULL) {
+    if ((envFile = Fopen(nameBuf, "w")) == NULL) {
         return(2);
     }
 
@@ -1824,7 +1825,7 @@
         } else {
             printf("This message contains '%s'-format data.\nDo you want to view it using the '%s' command (y/n) [y] ? ", ctype, ShortCommand(progname));
         }
-        s = gets(AnsBuf);
+        s = fgets(AnsBuf, sizeof(AnsBuf), stdin);
         if (!s) return(0); /* EOF */
 	while (s && *s && isspace((unsigned char) *s)) ++s;
 	if (*s == 'y' || *s == 'Y' || !*s || *s == '\n') return(1);
@@ -2037,7 +2038,7 @@
     } else {
         /* What follows is REALLY bogus, but all my encoding stuff is pipe-oriented right now... */
         MkTmpFileName(TmpFile);
-        fp = fopen(TmpFile, WRITE_BINARY);
+        fp = Fopen(TmpFile, WRITE_BINARY);
         if (!fp) {
             fprintf(stderr, "Could not open temporary file\n");
         } else {
@@ -2192,7 +2193,7 @@
                             strcpy(thispart->fname, TmpFileNameBuf);
                             WriteTmpFile(thispart->fname, thispart->ctype);
                             strcat(TmpFileNameBuf, "H");
-                            headfp = fopen(TmpFileNameBuf, "w");
+                            headfp = Fopen(TmpFileNameBuf, "w");
                             if (headfp) {
                                 fputs(mailheaders+12, headfp);
                                 /* The +12 gets rid of MM_HEADERS=\n */
@@ -2298,7 +2299,7 @@
     FILE *fpout;
     int retval = 0;
 
-    fpout = fopen(fname, WRITE_BINARY);
+    fpout = Fopen(fname, WRITE_BINARY);
     if (!fpout) {
         perror("WriteTmpFile");
         ExitWithError("Can't create temporary file");
@@ -2519,7 +2520,7 @@
     FILE *script;
 
     MkTmpFileName(nameBuf);
-    if ((script = fopen(nameBuf, "w")) == NULL) {
+    if ((script = Fopen(nameBuf, "w")) == NULL) {
         fprintf(stderr, "Unable to open %s for writing\n", nameBuf);
         exit(1);
     }
diff -d -r -u -P mm2.7.orig/src/metamail/shared.c mm2.7/src/metamail/shared.c
--- mm2.7.orig/src/metamail/shared.c	Mon Jun 15 00:30:47 1998
+++ mm2.7/src/metamail/shared.c	Sat Jun 20 16:51:54 1998
@@ -1,6 +1,11 @@
 #include <stdio.h>
 #include <ctype.h>
 #include <config.h>
+#include <unistd.h>
+#include <string.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/stat.h>
 #ifdef SYSV
 #include <unistd.h>
 #include <sys/utsname.h>
@@ -116,5 +121,55 @@
         initialized = 1;
     }
     return(hostname);
+}
+
+
+/*  This fopen wrapper function is designed to avoid /tmp-file race
+ *  conditions where a temporary filename is created and somebody
+ *  throws a link in your way before the fopen(...,"w").  This
+ *  would only happen if another user on the system were actively
+ *  trying to trick you into destroying files.
+ *  Sorry, but "a" mode is not really handled any safer than fopen,
+ *  since I really have no criterium for deciding what files are
+ *  OK to write to.  */
+FILE *Fopen(Fopen_path,Fopen_mode)
+char *Fopen_path; char *Fopen_mode;
+{
+#ifdef MSDOS
+return(fopen(Fopen_path,Fopen_mode));
+#else
+int Fopen_fd;
+struct stat Fopen_sb;
+int Fopen_appendmode = 0;
+int Fopen_readmode = 0;
+int Fopen_openflags = 0;
+int Fopen_r;
+if ( strchr(Fopen_mode,'r') != (char *)0 ) return(fopen(Fopen_path,Fopen_mode));
+if ( strchr(Fopen_mode,'a') != (char *)0 ) Fopen_appendmode = 1;
+if ( strchr(Fopen_mode,'+') != (char *)0 ) Fopen_readmode = 1;
+if ( ( Fopen_appendmode && (strchr(Fopen_mode,'w') != (char *)0) ) ||
+     ( (! Fopen_appendmode) && (strchr(Fopen_mode,'w') == (char *)0) ) )
+    {
+    errno = EINVAL ;
+    return( (FILE *)0 );
+    }
+if ( Fopen_appendmode )
+    {
+    /*  If "a" and file exists, pass it to the real fopen()  */
+    Fopen_r = stat(Fopen_path,&Fopen_sb) ;
+    if ( (Fopen_r != -1) || (errno != ENOENT) )
+        return( fopen(Fopen_path,Fopen_mode) );
+    }
+if ( Fopen_readmode )
+    Fopen_openflags = O_RDWR|O_CREAT|O_EXCL ;
+else
+    Fopen_openflags = O_WRONLY|O_CREAT|O_EXCL ;
+if ( Fopen_appendmode ) Fopen_openflags |= O_APPEND ;
+remove( Fopen_path );
+/*  0666?  We'd better hope their umask is safe...  */
+Fopen_fd = open(Fopen_path,Fopen_openflags,0666);
+if ( Fopen_fd > -1 ) return( fdopen(Fopen_fd,Fopen_mode) );
+return( (FILE *)0 );
+#endif
 }
 
diff -d -r -u -P mm2.7.orig/src/metamail/splitmail.c mm2.7/src/metamail/splitmail.c
--- mm2.7.orig/src/metamail/splitmail.c	Mon Jun 15 00:30:47 1998
+++ mm2.7/src/metamail/splitmail.c	Sat Jun 20 15:57:02 1998
@@ -26,6 +26,7 @@
 #include <config.h>
 #include <ctype.h>
 #include <time.h>
+#include <fcntl.h>
 
 #define MINCHUNKSIZE 20000 /* Better be enough to hold the headers, or we die! */
 extern char *malloc(), *index(), *getmyname();
@@ -243,6 +244,7 @@
 char *deliverycmd, *prefix, *SharedHeaders, *SubjectBuf, *id, *MessageID, *bigbuf, *OrigID;
 {
     FILE *fpout;
+    int fd;
     char OutputFile[1000];
     int code;
 #if defined(sequent)
@@ -255,7 +257,11 @@
         fpout = popen(deliverycmd, "w");
     } else {
         sprintf(OutputFile, "%s%d", prefix, whichpart);
-        fpout = fopen(OutputFile, "w");
+        /* fpout = fopen(OutputFile, "w"); */
+        remove(OutputFile);
+        fpout = NULL;
+        fd = open(OutputFile, O_WRONLY|O_CREAT|O_EXCL, 0600);
+        if ( fd > -1 ) fpout = fdopen(fd, "w");
     }
     if (!fpout) {
 	fprintf(stderr, "splitmail: Can't open %s for writing\n", DoDeliver ? deliverycmd : OutputFile);