]> git.pld-linux.org Git - packages/metamail.git/blame - metamail-ohnonotagain.patch
- release 23 (in rawhide is 22),
[packages/metamail.git] / metamail-ohnonotagain.patch
CommitLineData
d3e996e7 1diff -d -r -u -P mm2.7.orig/src/bin/audiocompose mm2.7/src/bin/audiocompose
2--- mm2.7.orig/src/bin/audiocompose Mon Jun 15 00:30:47 1998
3+++ mm2.7/src/bin/audiocompose Sat Jun 20 14:41:16 1998
4@@ -28,8 +28,8 @@
5 set dev=/dev/audio
6 endif
7
8-set audiofile=$1
9-if (-e $audiofile && ! -z $audiofile) goto whatnext
10+set audiofile="$1"
11+if (-e "$audiofile" && ! -z "$audiofile") goto whatnext
12
13 record:
14 echo -n "Press RETURN when you are ready to start recording: "
15@@ -38,13 +38,22 @@
16 # THIS IS UNBELIEVABLY GRUBBY
17 onintr cleanup
18 if (! $?RECORD_AUDIO) then
19- (/bin/cat < $dev > $audiofile) &
20+ (/bin/cat < $dev > "$audiofile") &
21 else
22- ($RECORD_AUDIO > $audiofile) &
23+ ($RECORD_AUDIO > "$audiofile") &
24 endif
25-jobs -l > ${METAMAIL_TMPDIR}/AUDCAT.$$
26-set foo=`/bin/cat ${METAMAIL_TMPDIR}/AUDCAT.$$`
27-/bin/rm ${METAMAIL_TMPDIR}/AUDCAT.$$
28+# Generate temporary file name:
29+if ( -x /bin/mktemp ) then
30+ set TmpAudCat=`/bin/mktemp ${METAMAIL_TMPDIR}/AUDCAT.XXXXXXX` || exit 1
31+else if ( -x /usr/bin/mktemp ) then
32+ set TmpAudCat=`/usr/bin/mktemp ${METAMAIL_TMPDIR}/AUDCAT.XXXXXXX` || exit 1
33+else
34+ set TmpAudCat=${METAMAIL_TMPDIR}/AUDCAT.$$
35+ rm -rf $TmpAudCat
36+endif
37+jobs -l > $TmpAudCat
38+set foo=`/bin/cat $TmpAudCat`
39+/bin/rm $TmpAudCat
40 set PID=$foo[2]
41 echo -n "press RETURN when you are done recording: "
42 set foo=$<
43@@ -63,7 +72,7 @@
44 set which = $<
45 switch ("$which")
46 case 1:
47- cat $audiofile > $dev
48+ cat "$audiofile" > $dev
49 breaksw
50 case 2:
51 goto record
52diff -d -r -u -P mm2.7.orig/src/bin/audiosend mm2.7/src/bin/audiosend
53--- mm2.7.orig/src/bin/audiosend Mon Jun 15 00:30:47 1998
54+++ mm2.7/src/bin/audiosend Sat Jun 20 14:42:48 1998
55@@ -29,7 +29,7 @@
56 endif
57
58 if ( $#argv == 1 ) then
59- set to = $1
60+ set to = "$1"
61 else
62 echo -n "To: "
63 set to = $<
64@@ -43,8 +43,23 @@
65 echo -n "Press RETURN when you are ready to start recording: "
66 set foo = $<
67
68-set fname = ${METAMAIL_TMPDIR}/audio-out.$$
69-set fnameraw = ${METAMAIL_TMPDIR}/audio-raw.$$
70+# Generate work file names:
71+if ( -x /bin/mktemp ) then
72+ set fname=`/bin/mktemp ${METAMAIL_TMPDIR}/audio-out.XXXXXXX` || exit 1
73+else if ( -x /usr/bin/mktemp ) then
74+ set fname=`/usr/bin/mktemp ${METAMAIL_TMPDIR}/audio-out.XXXXXXX` || exit 1
75+else
76+ set fname = ${METAMAIL_TMPDIR}/audio-out.$$
77+ rm -rf $fname
78+endif
79+if ( -x /bin/mktemp ) then
80+ set fnameraw=`/bin/mktemp ${METAMAIL_TMPDIR}/audio-raw.XXXXXXX` || exit 1
81+else if ( -x /usr/bin/mktemp ) then
82+ set fnameraw=`/usr/bin/mktemp ${METAMAIL_TMPDIR}/audio-raw.XXXXXXX` || exit 1
83+else
84+ set fnameraw = ${METAMAIL_TMPDIR}/audio-raw.$$
85+ rm -rf $fnameraw
86+endif
87
88 echo "To: " "$to" > $fname
89 echo "Subject: " "$subject" >> $fname
90@@ -60,9 +75,18 @@
91 else
92 ($RECORD_AUDIO > $fnameraw) &
93 endif
94-jobs -l > ${METAMAIL_TMPDIR}/AUDCAT.$$
95-set foo=`/bin/cat ${METAMAIL_TMPDIR}/AUDCAT.$$`
96-/bin/rm ${METAMAIL_TMPDIR}/AUDCAT.$$
97+# Generate temporary file name:
98+if ( -x /bin/mktemp ) then
99+ set TmpAudCat=`/bin/mktemp ${METAMAIL_TMPDIR}/AUDCAT.XXXXXXX` || exit 1
100+else if ( -x /usr/bin/mktemp ) then
101+ set TmpAudCat=`/usr/bin/mktemp ${METAMAIL_TMPDIR}/AUDCAT.XXXXXXX` || exit 1
102+else
103+ set TmpAudCat=${METAMAIL_TMPDIR}/AUDCAT.$$
104+ rm -rf $TmpAudCat
105+endif
106+jobs -l > $TmpAudCat
107+set foo=`/bin/cat $TmpAudCat`
108+/bin/rm $TmpAudCat
109 set PID=$foo[2]
110 echo -n "press RETURN when you are done recording: "
111 set foo=$<
112@@ -86,7 +110,7 @@
113 switch ("$which")
114 case 1:
115 echo -n "Sending mail, please wait... "
116- /usr/lib/sendmail $to $cc < $fname
117+ /usr/lib/sendmail "$to" "$cc" < $fname
118 if (! $status) then
119 echo "Done."
120 rm $fname
121diff -d -r -u -P mm2.7.orig/src/bin/extcompose mm2.7/src/bin/extcompose
122--- mm2.7.orig/src/bin/extcompose Mon Jun 15 00:30:47 1998
123+++ mm2.7/src/bin/extcompose Sat Jun 20 14:47:19 1998
124@@ -6,7 +6,7 @@
125 echo "Usage: extcompose output-file-name"
126 exit 1
127 endif
128-set OUTFNAME=$1
129+set OUTFNAME="$1"
130
131 chooseaccesstype:
132 echo ""
133@@ -19,21 +19,21 @@
134 echo ""
135 echo -n "Please enter a number from 1 to 5: "
136 set ans=$<
137-if ($ans == 1) then
138+if ("$ans" == 1) then
139 set accesstype=local-file
140-else if ($ans == 2) then
141+else if ("$ans" == 2) then
142 set accesstype=afs
143-else if ($ans == 3) then
144+else if ("$ans" == 3) then
145 set accesstype=anon-ftp
146-else if ($ans == 4) then
147+else if ("$ans" == 4) then
148 set accesstype=ftp
149-else if ($ans == 5) then
150+else if ("$ans" == 5) then
151 set accesstype=mail-server
152 else
153 echo "That is NOT one of your choices."
154 goto chooseaccesstype
155 endif
156-if ($accesstype == "ftp" || $accesstype == "anon-ftp") then
157+if ("$accesstype" == "ftp" || "$accesstype" == "anon-ftp") then
158 echo -n "Enter the full Internet domain name of the FTP site: "
159 set site=$<
160 echo -n "Enter the name of the directory containing the file (RETURN for top-level): "
161@@ -42,27 +42,27 @@
162 set name = $<
163 echo -n "Enter the transfer mode (type 'image' for binary data, RETURN otherwise): "
164 set mode = $<
165- if ($mode == "") set mode=ascii
166- echo "Content-type: message/external-body; access-type=$accesstype; name="\"$name\"\; > $OUTFNAME
167- echo -n " site="\"$site\" >> $OUTFNAME
168- if ($directory != "") echo -n "; directory="\"$directory\">> $OUTFNAME
169- if ($mode != "") echo -n "; mode="\"$mode\">> $OUTFNAME
170- echo "">> $OUTFNAME
171-else if ($accesstype == "local-file" || $accesstype == "afs") then
172+ if ("$mode" == "") set mode=ascii
173+ echo "Content-type: message/external-body; access-type=$accesstype; name="\"$name\"\; > "$OUTFNAME"
174+ echo -n " site="\"$site\" >> "$OUTFNAME"
175+ if ("$directory" != "") echo -n "; directory="\"$directory\">> "$OUTFNAME"
176+ if ("$mode" != "") echo -n "; mode="\"$mode\">> "$OUTFNAME"
177+ echo "">> "$OUTFNAME"
178+else if ("$accesstype" == "local-file" || "$accesstype" == "afs") then
179 fname:
180 echo -n "Enter the full path name for the file: "
181 set name = $<
182- if (! -e $name) then
183+ if (! -e "$name") then
184 echo "The file $name does not seem to exist."
185 goto fname
186 endif
187- echo "Content-type: message/external-body; access-type=$accesstype; name="\"$name\"> $OUTFNAME
188-else if ($accesstype == "mail-server") then
189+ echo "Content-type: message/external-body; access-type=$accesstype; name="\"$name\"> "$OUTFNAME"
190+else if ("$accesstype" == "mail-server") then
191 echo -n "Enter the full email address for the mailserver: "
192 set server=$<
193- echo "Content-type: message/external-body; access-type=$accesstype; server="\"$server\"> $OUTFNAME
194+ echo "Content-type: message/external-body; access-type=$accesstype; server="\"$server\"> "$OUTFNAME"
195 else
196- echo accesstype $accesstype not yet implemented
197+ echo accesstype "$accesstype" not yet implemented
198 goto chooseaccesstype
199 endif
200
201@@ -92,12 +92,12 @@
202 echo "That is not one of your choices."
203 goto getcenc
204 endsw
205-echo "" >> $OUTFNAME
206-echo "Content-type: " $ctype >> $OUTFNAME
207-if ($cenc != "") echo "Content-transfer-encoding: " $cenc >> $OUTFNAME
208-echo "" >> $OUTFNAME
209-if ($accesstype == "mail-server") then
210+echo "" >> "$OUTFNAME"
211+echo "Content-type: " "$ctype" >> "$OUTFNAME"
212+if ("$cenc" != "") echo "Content-transfer-encoding: " "$cenc" >> "$OUTFNAME"
213+echo "" >> "$OUTFNAME"
214+if ("$accesstype" == "mail-server") then
215 echo "Please enter all the data to be sent to the mailserver in the message body, "
216 echo "ending with ^D or your usual end-of-data character:"
217- cat >> $OUTFNAME
218+ cat >> "$OUTFNAME"
219 endif
220diff -d -r -u -P mm2.7.orig/src/bin/getfilename mm2.7/src/bin/getfilename
221--- mm2.7.orig/src/bin/getfilename Mon Jun 15 00:30:47 1998
222+++ mm2.7/src/bin/getfilename Sat Jun 20 14:47:43 1998
223@@ -8,9 +8,9 @@
224 echo Aborted
225 exit -1
226 endif
227-if (! -r $fnam) then
228+if (! -r "$fnam") then
229 echo No such file
230 exit -1
231 endif
232-cp $fnam $2
233+cp "$fnam" "$2"
234 exit 0
235diff -d -r -u -P mm2.7.orig/src/bin/mailserver mm2.7/src/bin/mailserver
236--- mm2.7.orig/src/bin/mailserver Mon Jun 15 00:30:47 1998
237+++ mm2.7/src/bin/mailserver Sat Jun 20 23:01:33 1998
238@@ -28,20 +28,28 @@
239 rehash
240 set FromName=""
241 set Subject=""
242-set TmpFile=/tmp/ms.$$
243+# Generate temporary file name:
244+if ( -x /bin/mktemp ) then
245+ set TmpFile=`/bin/mktemp /tmp/ms.XXXXXXX` || exit 1
246+else if ( -x /usr/bin/mktemp ) then
247+ set TmpFile=`/usr/bin/mktemp /tmp/ms.XXXXXXX` || exit 1
248+else
249+ set TmpFile=/tmp/ms.$$
250+ rm -rf $TmpFile
251+endif
252 set FOORAW=$<
253 while ("$FOORAW" != "")
254 set FOO=(` echo "$FOORAW" | tr "[" "x"`)
255 set BAR=($FOO)
256-set BARLC=(`echo $FOO | tr A-Z a-z`)
257-if ($BARLC[1] == "from:") then
258+set BARLC=(`echo "$FOO" | tr A-Z a-z`)
259+if ("$BARLC[1]" == "from:") then
260 if ("$FromName" == "") then
261- set FromName = ($BAR[2-])
262+ set FromName = ("$BAR[2-]")
263 endif
264 else if ($BARLC[1] == "reply-to:") then
265- set FromName = ($BAR[2-])
266+ set FromName = ("$BAR[2-]")
267 else if ($BARLC[1] == "subject:") then
268- set Subject = ($BAR[2-])
269+ set Subject = ("$BAR[2-]")
270 endif
271 set FOORAW=$<
272 end
273@@ -52,10 +60,10 @@
274 endif
275
276 if ("$FromName" == "") then
277- cat > $TmpFile <<!
278-From: $LOCALADDR@`hostname`
279-To: $MAINTAINER
280-Subject: $Subject
281+ echo From: "$LOCALADDR"@`hostname` > $TmpFile
282+ echo To: "$MAINTAINER" >> $TmpFile
283+ echo Subject: "$Subject" >> $TmpFile
284+ cat >> $TmpFile <<!
285
286 The metamail mailserver script, installed locally as $LOCALADDR, \rhas received a request without any reply address.
287
288@@ -68,18 +76,18 @@
289 probably run in some circumstance other than mail delivery.
290 --------------------
291 !
292- cat $TmpFile - | /usr/lib/sendmail $MAINTAINER
293+ cat $TmpFile - | /usr/lib/sendmail "$MAINTAINER"
294 # Takes the rest of the message from standard input
295 rm $TmpFile
296 exit 0
297 endif
298
299-set danger=`echo $Subject | fgrep ..`
300-if ($danger != "") then
301- cat > $TmpFile <<!
302-From: $LOCALADDR@`hostname`
303-To: $FromName
304-Subject: Re: $Subject
305+set danger=`echo "$Subject" | fgrep ..`
306+if ("$danger" != "") then
307+ echo From: "$LOCALADDR"@`hostname` > $TmpFile
308+ echo To: "$FromName" >> $TmpFile
309+ echo Subject: Re: "$Subject" >> $TmpFile
310+ cat >> $TmpFile <<!
311
312 For security reasons, this mailserver automatically rejects all requests
313 that contain ".." in the path name.
314@@ -93,60 +101,64 @@
315
316 cd $ROOTDIR
317 if (! -e "$Subject") then
318- cat > $TmpFile <<!
319-From: $LOCALADDR@`hostname`
320-To: $FromName
321-Subject: Re: $Subject
322-
323-You recently sent mail to this mail-server requesting the file:
324- $Subject
325-
326-That file does not exist, so your request could not be met.
327-
328-Here is a list of the currently available files:
329---------------------------------
330-!
331+ # We use a bunch of echo statements rather than a here-document
332+ # so that we can be sure to quote all of our variables properly.
333+ echo From: "$LOCALADDR"@`hostname` > $TmpFile
334+ echo To: "$FromName" >> $TmpFile
335+ echo Subject: Re: "$Subject" >> $TmpFile
336+ echo "" >> $TmpFile
337+ echo "You recently sent mail to this mail-server requesting the file:" >> $TmpFile
338+ echo " $Subject" >> $TmpFile
339+ echo "" >> $TmpFile
340+ echo "That file does not exist, so your request could not be met." >> $TmpFile
341+ echo "" >> $TmpFile
342+ echo "Here is a list of the currently available files:" >> $TmpFile
343+ echo "--------------------------------" >> $TmpFile
344 ls -R >> $TmpFile
345+ echo "" >> $TmpFile
346 /usr/lib/sendmail -t < $TmpFile
347 rm $TmpFile
348 exit 0
349 endif
350
351-if (-e ${Subject}.ct) then
352- set ct=`cat ${Subject}.ct`
353+if (-e "${Subject}.ct") then
354+ set ct=`cat "${Subject}.ct"`
355 else
356 set ct="application/octet-stream"
357 endif
358
359 metasend -b -t "$FromName" -f "$Subject" -m "$ct" -s "Re: $Subject"
360 if ($status != 0) then
361- cat > $TmpFile <<!
362-From: $LOCALADDR@`hostname`
363-To: $FromName
364-Subject: Re: $Subject
365-
366-You recently sent mail to this mail-server requestion the file:
367- $Subject
368-
369-An unanticipated error apparently precluded delivery of the file.
370-Please accept our apologies.
371-
372-Command failed:
373- metasend -b -t "$FromName" -f "$Subject" -m "$ct" -s "Re: $Subject"
374-
375-!
376+ # We use a bunch of echo statements rather than a here-document
377+ # so that we can be sure to quote all of our variables properly.
378+ echo From: "$LOCALADDR"@`hostname` > $TmpFile
379+ echo To: "$FromName" >> $TmpFile
380+ echo Subject: Re: "$Subject" >> $TmpFile
381+ echo "" >> $TmpFile
382+ echo "You recently sent mail to this mail-server requestion the file:" >> $TmpFile
383+ echo " $Subject" >> $TmpFile
384+ echo "" >> $TmpFile
385+ echo "An unanticipated error apparently precluded delivery of the file." >> $TmpFile
386+ echo "Please accept our apologies." >> $TmpFile
387+ echo "" >> $TmpFile
388+ echo "Command failed:" >> $TmpFile
389+ echo " metasend -b -t $FromName -f $Subject -m $ct -s Re: $Subject" >> $TmpFile
390+ echo "" >> $TmpFile
391 /usr/lib/sendmail -t < $TmpFile
392 rm $TmpFile
393 exit 0
394 endif
395
396 if ("$LOGADDR" != "") then
397- /usr/lib/sendmail -t <<!
398-From: ${LOCALADDR}@`hostname`
399-To: $LOGADDR
400-Subject: Autosend delivery report
401+ echo From: "${LOCALADDR}"@`hostname` > $TmpFile
402+ echo To: "$LOGADDR" >> $TmpFile
403+ echo Subject: Autosend delivery report >> $TmpFile
404+ echo "" >> $TmpFile
405+ echo The file: "$Subject" >> $TmpFile
406+ echo was sent to: "$FromName" >> $TmpFile
407+ echo "" >> $TmpFile
408+ /usr/lib/sendmail -t < $TmpFile
409+endif
410
411-The file: $Subject
412-was sent to: $FromName
413-!
414+rm -f $TmpFile
415 exit 0
416diff -d -r -u -P mm2.7.orig/src/bin/metasend mm2.7/src/bin/metasend
417--- mm2.7.orig/src/bin/metasend Mon Jun 15 00:30:47 1998
418+++ mm2.7/src/bin/metasend Sat Jun 20 14:59:30 1998
419@@ -45,7 +45,7 @@
420 echo "-S requires a following argument, the SPLIT threshhold"
421 exit -1
422 endif
423- set splitsize=$1
424+ set splitsize="$1"
425 shift
426 breaksw
427 case "-b":
428@@ -68,7 +68,7 @@
429 echo "-i requires a following argument, the Content-ID value"
430 exit -1
431 endif
432- set cid=$1
433+ set cid="$1"
434 shift
435 breaksw
436 case "-I":
437@@ -77,7 +77,7 @@
438 echo "-I requires a following argument, the multipart Content-ID value"
439 exit -1
440 endif
441- set multicid=$1
442+ set multicid="$1"
443 shift
444 breaksw
445 case "-s":
446@@ -122,12 +122,12 @@
447 echo "-e requires a following argument, the ENCODING value"
448 exit -1
449 endif
450- set encode=$1
451- if ($encode == "base64") then
452+ set encode="$1"
453+ if ("$encode" == "base64") then
454 set encodingprog = "mimencode -b"
455- else if ($encode == "x-uue") then
456+ else if ("$encode" == "x-uue") then
457 set encodingprog = "uuencode mail-body"
458- else if ($encode == "7bit") then
459+ else if ("$encode" == "7bit") then
460 set encodingprog = cat
461 else
462 set encodingprog = "mimencode -q"
463@@ -141,9 +141,9 @@
464 echo "-f requires a following argument, the DATA FILE"
465 exit -1
466 endif
467- set datafile=$1
468- if (! -e $datafile) then
469- echo The file $datafile does not exist.
470+ set datafile="$1"
471+ if (! -e "$datafile") then
472+ echo The file "$datafile" does not exist.
473 exit -1
474 endif
475 shift
476@@ -154,10 +154,10 @@
477 echo "-m requires a following argument, the MIME CONTENT-TYPE"
478 exit -1
479 endif
480-# set ctyperaw = $1
481-# set ctype=`echo $ctyperaw | tr \" \'`
482+# set ctyperaw = "$1"
483+# set ctype=`echo "$ctyperaw" | tr \" \'`
484 set ctype = "$1"
485- if (`echo $ctype | grep /` == "") then
486+ if (`echo "$ctype" | grep /` == "") then
487 echo "Invalid content-type specified"
488 exit -1
489 endif
490@@ -228,11 +228,11 @@
491 endif
492 endif
493 set ctype${multipart} = "$ctype"
494- set datafile${multipart} = $datafile
495- set encode${multipart} = $encode
496+ set datafile${multipart} = "$datafile"
497+ set encode${multipart} = "$encode"
498 set cdescrip${multipart} = "$cdescrip"
499 set cid${multipart} = "$cid"
500- set isentity${multipart} = $isentity
501+ set isentity${multipart} = "$isentity"
502 set encodingprog${multipart} = "$encodingprog"
503 unset ctype
504 unset datafile
505@@ -247,11 +247,11 @@
506 shift
507 breaksw
508 default:
509- echo UNRECOGNIZED METASEND OPTION: $1
510+ echo UNRECOGNIZED METASEND OPTION: "$1"
511 exit -1
512 endsw
513 end
514-if ($batchmode == 0) then
515+if ("$batchmode" == 0) then
516 if (! $?to) then
517 echo -n "To: "
518 set to = $<
519@@ -271,18 +271,18 @@
520 # set ctype=`echo $ctyperaw | tr \" \'`
521 set ctype = "$<"
522 endif
523- if (`echo $ctype | grep /` == "") then
524+ if (`echo "$ctype" | grep /` == "") then
525 echo "Invalid content-type specified"
526 unset ctype
527 goto anotherpart
528 endif
529-# if ($ctype != $ctyperaw) echo Double quotes not allowed, using $ctype
530+# if ("$ctype" != "$ctyperaw") echo Double quotes not allowed, using "$ctype"
531 if (! $?datafile) then
532 getfile:
533 echo -n "Name of file containing $ctype data: "
534 set datafile = $<
535- if (! -e $datafile) then
536- echo The file $datafile does not exist.
537+ if (! -e "$datafile") then
538+ echo The file "$datafile" does not exist.
539 goto getfile
540 endif
541 endif
542@@ -320,12 +320,12 @@
543 set ans=$<
544 if ("$ans" =~ y*) then
545 set ctype${multipart} = "$ctype"
546- set datafile${multipart} = $datafile
547- set encode${multipart} = $encode
548+ set datafile${multipart} = "$datafile"
549+ set encode${multipart} = "$encode"
550 set encodingprog${multipart} = "$encodingprog"
551 set cdescrip${multipart} = "$cdescrip"
552 set cid${multipart} = "$cid"
553- set isentity${multipart} = $isentity
554+ set isentity${multipart} = "$isentity"
555 set cdescrip = "An object packed by metasend"
556 set isentity=0
557 unset ctype
558@@ -339,7 +339,7 @@
559 goto anotherpart
560 endif
561 else
562- if ($outputfile == "") then
563+ if ("$outputfile" == "") then
564 if (! $?to || ! $?subject || ! $?ctype || ! $?datafile) then
565 echo metasend: in batch mode, if output is not directed to a file,-t, -s, -f, and -m are all required
566 exit -1
567@@ -359,12 +359,12 @@
568 exit -1
569 endif
570 endif
571- if (! -e $datafile) then
572- echo metasend: The file $datafile does not exist
573+ if (! -e "$datafile") then
574+ echo metasend: The file "$datafile" does not exist
575 exit -1
576 endif
577 # if (! $?cc) set cc=""
578-# if ($ctype != $ctyperaw) echo Double quotes not allowed, using $ctype
579+# if ("$ctype" != "$ctyperaw") echo Double quotes not allowed, using "$ctype"
580 if (! $?encode) then
581 if ("$ctype" =~ text*) then
582 set encodingprog = "mimencode -q"
583@@ -373,11 +373,11 @@
584 set encodingprog = "mimencode -b"
585 set encode = base64
586 endif
587- else if ($encode == "base64") then
588+ else if ("$encode" == "base64") then
589 set encodingprog = "mimencode -b"
590- else if ($encode == "x-uue") then
591+ else if ("$encode" == "x-uue") then
592 set encodingprog = "uuencode mail-body"
593- else if ($encode == "7bit") then
594+ else if ("$encode" == "7bit") then
595 set encodingprog = cat
596 else
597 set encodingprog = "mimencode -q"
598@@ -395,14 +395,22 @@
599 endif
600 endif
601 set ctype${multipart} = "$ctype"
602-set datafile${multipart} = $datafile
603-set encode${multipart} = $encode
604+set datafile${multipart} = "$datafile"
605+set encode${multipart} = "$encode"
606 set cdescrip${multipart} = "$cdescrip"
607 set cid${multipart} = "$cid"
608-set isentity${multipart} = $isentity
609+set isentity${multipart} = "$isentity"
610 set encodingprog${multipart} = "$encodingprog"
611
612-set fname = ${METAMAIL_TMPDIR}/metasend.$$
613+# Generate file name:
614+if ( -x /bin/mktemp ) then
615+ set fname=`/bin/mktemp ${METAMAIL_TMPDIR}/metasend.XXXXXXX` || exit 1
616+else if ( -x /usr/bin/mktemp ) then
617+ set fname=`/usr/bin/mktemp ${METAMAIL_TMPDIR}/metasend.XXXXXXX` || exit 1
618+else
619+ set fname=${METAMAIL_TMPDIR}/metasend.$$
620+ rm -rf $fname
621+endif
622 echo "MIME-Version: 1.0" > $fname
623 if ($?to) then
624 echo "To: " "$to" >> $fname
625@@ -429,17 +437,26 @@
626 echo " boundary="\"$boundary\" >> $fname
627 echo "" >> $fname
628 if ($?preamblefile) then
629- cat $preamblefile >> $fname
630+ cat "$preamblefile" >> $fname
631 else
632 echo "This is a multimedia message in MIME format. If you are reading this" >> $fname
633 echo "prefix, your mail reader does not understand MIME. You may wish" >> $fname
634 echo "to look into upgrading to a newer version of your mail reader." >> $fname
635 endif
636 set i=1
637- set junkfile=${METAMAIL_TMPDIR}/mmjunk.$$
638- while ($multipart >= $i)
639+
640+ # Generate temporary file name:
641+ if ( -x /bin/mktemp ) then
642+ set junkfile=`/bin/mktemp ${METAMAIL_TMPDIR}/mmjunk.XXXXXXX` || exit 1
643+ else if ( -x /usr/bin/mktemp ) then
644+ set junkfile=`/usr/bin/mktemp ${METAMAIL_TMPDIR}/mmjunk.XXXXXXX` || exit 1
645+ else
646+ set junkfile=${METAMAIL_TMPDIR}/mmjunk.$$
647+ rm -rf $junkfile
648+ endif
649+ while ("$multipart" >= $i)
650 echo "" >> $fname
651- echo --$boundary >> $fname
652+ echo --"$boundary" >> $fname
653 echo set isentity=\$isentity$i > $junkfile
654 source $junkfile
655 if (! $isentity) then
656@@ -463,27 +480,27 @@
657 end
658 rm $junkfile
659 echo "" >> $fname
660- echo --${boundary}-- >> $fname
661+ echo --"${boundary}"-- >> $fname
662 echo "" >> $fname
663 else
664 if (! $isentity) then
665 echo "Content-ID: $cid" >> $fname
666- echo "Content-type: " $ctype >> $fname
667- echo "Content-Description: " $cdescrip >> $fname
668- echo "Content-Transfer-Encoding: " $encode >> $fname
669+ echo "Content-type: " "$ctype" >> $fname
670+ echo "Content-Description: " "$cdescrip" >> $fname
671+ echo "Content-Transfer-Encoding: " "$encode" >> $fname
672 endif
673 echo "" >> $fname
674- $encodingprog < $datafile >> $fname
675+ $encodingprog < "$datafile" >> $fname
676 # Ensure last line has trailing carriage return
677 echo "" >> $fname
678 endif
679-if ($outputfile == "") then
680- if ($batchmode == 0) echo -n "Delivering mail, please wait... "
681- splitmail -s $splitsize -d $fname
682+if ("$outputfile" == "") then
683+ if ("$batchmode" == 0) echo -n "Delivering mail, please wait... "
684+ splitmail -s "$splitsize" -d "$fname"
685 if (! $status) then
686- if ($batchmode == 0) echo "Mail delivery apparently succeeded."
687+ if ("$batchmode" == 0) echo "Mail delivery apparently succeeded."
688 rm $fname
689- else if ($MustDelete == 1) then
690+ else if ("$MustDelete" == 1) then
691 echo Mail delivery failed
692 rm $fname
693 exit -1
694@@ -492,7 +509,7 @@
695 exit -1
696 endif
697 else
698- mv $fname $outputfile
699+ mv $fname "$outputfile"
700 if ($status) exit -1
701 endif
702 exit 0
703diff -d -r -u -P mm2.7.orig/src/bin/patch-metamail mm2.7/src/bin/patch-metamail
704--- mm2.7.orig/src/bin/patch-metamail Mon Jun 15 00:30:47 1998
705+++ mm2.7/src/bin/patch-metamail Sat Jun 20 23:18:20 1998
706@@ -5,40 +5,53 @@
707 set DIRNAME=pub/nsb
708 set PREFIX="mm.patch."
709
710+if (! $?METAMAIL_TMPDIR) then
711+ set METAMAIL_TMPDIR=/tmp
712+endif
713+
714 if ($#argv < 2 || $#argv > 5) then
715 echo Usage: patch-metamail source-tree-root patch-number [hostname [dirname [prefix]]]
716 exit -1
717 endif
718
719-set TREEROOT=$1
720-set PATCHNUMBER=$2
721-if ($#argv > 2) set HOSTNAME=$3
722-if ($#argv > 3) set DIRNAME=$4
723-if ($#argv > 4) set PREFIX=$5
724+set TREEROOT="$1"
725+set PATCHNUMBER="$2"
726+if ($#argv > 2) set HOSTNAME="$3"
727+if ($#argv > 3) set DIRNAME="$4"
728+if ($#argv > 4) set PREFIX="$5"
729
730 echo WARNING: This program, if allowed to do so, will attempt to
731 echo install a PATCH file for your metamail sources which are rooted
732-echo in the directory $TREEROOT.
733+echo in the directory "$TREEROOT".
734 echo ""
735 echo It will use a patch file that it retrieves via anonymous ftp
736-echo from the host $HOSTNAME, in the directory $DIRNAME,
737-echo with filenames starting with ${PREFIX}.
738+echo from the host "$HOSTNAME", in the directory "$DIRNAME",
739+echo with filenames starting with "${PREFIX}".
740 echo ""
741 echo -n "Do you want to install the patch in directory $TREEROOT [y/n] ? "
742 set ans=$<
743-if ($ans == "y" || $ans == "Y") then
744- cd $TREEROOT
745+if ("$ans" == "y" || "$ans" == "Y") then
746+ cd "$TREEROOT"
747 set ident=`whoami`@`hostname`
748- echo Using anonymous ftp with password $ident
749- ftp -n <<!
750-open $HOSTNAME
751-user anonymous $ident
752-cd $DIRNAME
753-binary
754-get ${PREFIX}${PATCHNUMBER}
755-quit
756-!
757- patch -p < ${PREFIX}${PATCHNUMBER}
758+ # Generate temporary file name:
759+ if ( -x /bin/mktemp ) then
760+ set TmpFtp=`/bin/mktemp ${METAMAIL_TMPDIR}/mm.ftp.XXXXXXX` || exit 1
761+ else if ( -x /usr/bin/mktemp ) then
762+ set TmpFtp=`/usr/bin/mktemp ${METAMAIL_TMPDIR}/mm.ftp.XXXXXXX` || exit 1
763+ else
764+ set TmpFtp=${METAMAIL_TMPDIR}/mm.ftp.$$
765+ rm -rf $TmpFtp
766+ endif
767+ echo open "$HOSTNAME" > $TmpFtp
768+ echo user anonymous "$ident" >> $TmpFtp
769+ echo cd "$DIRNAME" >> $TmpFtp
770+ echo binary >> $TmpFtp
771+ echo get "${PREFIX}${PATCHNUMBER}" >> $TmpFtp
772+ echo quit >> $TmpFtp
773+ echo Using anonymous ftp with password "$ident"
774+ ftp -n < $TmpFtp
775+ rm -f $TmpFtp
776+ patch -p < "${PREFIX}${PATCHNUMBER}"
777 else
778 echo Patch not installed
779 endif
780diff -d -r -u -P mm2.7.orig/src/bin/rcvAppleSingle mm2.7/src/bin/rcvAppleSingle
781--- mm2.7.orig/src/bin/rcvAppleSingle Mon Jun 15 00:30:47 1998
782+++ mm2.7/src/bin/rcvAppleSingle Sat Jun 20 14:08:30 1998
783@@ -13,7 +13,7 @@
784 # Written by Patrik Faltstrom, paf@nada.kth.se, may 1993
785 #
786
787-FILENAME=$1
788+FILENAME="$1"
789
790 #
791 # If $AFPDIR environment variable is set, all Macintosh filenames
792@@ -31,12 +31,12 @@
793 exit 1
794 fi
795
796-echo $NAME | grep '^/' > /dev/null
797+echo "$NAME" | grep '^/' > /dev/null
798 if [ $? = 1 ]; then
799- NAME=$AFPDIR/$NAME
800+ NAME="$AFPDIR/$NAME"
801 fi
802
803-cvt2cap $FILENAME $NAME
804+cvt2cap "$FILENAME" "$NAME"
805 echo "Saved AppleMacintosh file as $NAME"
806 exit 0
807
808diff -d -r -u -P mm2.7.orig/src/bin/showaudio mm2.7/src/bin/showaudio
809--- mm2.7.orig/src/bin/showaudio Mon Jun 15 00:30:47 1998
810+++ mm2.7/src/bin/showaudio Sat Jun 20 15:01:55 1998
811@@ -33,7 +33,7 @@
812 set ORG="Bellcore"
813 set STDINPUT=0
814 if ("$1" == "-p") then
815- set AUDIOPHONE=$2
816+ set AUDIOPHONE="$2"
817 shift
818 shift
819 endif
820@@ -73,13 +73,13 @@
821 echo ""
822 echo -n "Which do you prefer (1 or 2)? "
823 set ans=$<
824- if ($ans == 2) then
825+ if ("$ans" == 2) then
826 echo "OK, we'll use the telephone..."
827 set AUDIOPHONEFORCE=1
828 echo "In the future, you can avoid this question by setting the environment variable"
829 echo "AUDIOPHONEFORCE to 1"
830 goto playphone
831- else if ($ans == 1) then
832+ else if ("$ans" == 1) then
833 echo "OK, Attempting to play the audio using your computer's speaker.."
834 set AUDIOSPEAKERFORCE=1
835 echo "In the future, you can avoid this question by setting the environment variable"
836@@ -93,8 +93,8 @@
837 set audiohost=$thishost
838 if ($?DISPLAY) then
839 set audiohost=`echo $DISPLAY | sed -e 's/:.*//'`
840- if ($audiohost == "unix") set audiohost=$thishost
841- if ($audiohost == "") set audiohost=$thishost
842+ if ("$audiohost" == "unix") set audiohost=$thishost
843+ if ("$audiohost" == "") set audiohost=$thishost
844 endif
845 if ($?AUDIOHOST) then
846 set audiohost=$AUDIOHOST
847@@ -127,9 +127,18 @@
848 if ($#argv >= 1) then
849 exec /usr/sbin/sfplay -i mu-law chan 1 rate 8000 end $*
850 else
851- cat > ${METAMAIL_TMPDIR}/audio.$$
852- /usr/sbin/sfplay -i mu-law chan 1 rate 8000 end ${METAMAIL_TMPDIR}/audio.$$
853- rm ${METAMAIL_TMPDIR}/audio.$$
854+ # Generate temporary file name:
855+ if ( -x /bin/mktemp ) then
856+ set TmpAudio=`/bin/mktemp ${METAMAIL_TMPDIR}/audio.XXXXXXX` || exit 1
857+ else if ( -x /usr/bin/mktemp ) then
858+ set TmpAudio=`/usr/bin/mktemp ${METAMAIL_TMPDIR}/audio.XXXXXXX` || exit 1
859+ else
860+ set TmpAudio=${METAMAIL_TMPDIR}/audio.$$
861+ rm -rf $TmpAudio
862+ endif
863+ cat > $TmpAudio
864+ /usr/sbin/sfplay -i mu-law chan 1 rate 8000 end $TmpAudio
865+ rm $TmpAudio
866 exit 0
867 endif
868 else if (-d /usr/sony) then
869@@ -198,7 +207,15 @@
870 echo ""
871 if (! $?MM_NOTTTY) set MM_NOTTTY=0
872 if ($MM_NOTTTY == 1) then
873- set fname=/tmp/mm.aud.$$
874+ # Generate unique file name:
875+ if ( -x /bin/mktemp ) then
876+ set fname=`/bin/mktemp /tmp/mm.aud.XXXXXXX` || exit 1
877+ else if ( -x /usr/bin/mktemp ) then
878+ set fname=`/usr/bin/mktemp /tmp/mm.aud.XXXXXXX` || exit 1
879+ else
880+ set fname=/tmp/mm.aud.$$
881+ rm -rf $fname
882+ endif
883 else
884 echo -n "Do you want to write the audio out to a file [y] ? "
885 set ANS=$<
886@@ -206,7 +223,7 @@
887 echo -n "File name:"
888 set fname=$<
889 endif
890-cp $1 $fname
891-if ($status == 0) echo Wrote raw audio file: $fname
892+cp "$1" "$fname"
893+if ($status == 0) echo Wrote raw audio file: "$fname"
894 exit 0
895
896diff -d -r -u -P mm2.7.orig/src/bin/showexternal mm2.7/src/bin/showexternal
897--- mm2.7.orig/src/bin/showexternal Mon Jun 15 00:30:47 1998
898+++ mm2.7/src/bin/showexternal Sat Jun 20 23:20:49 1998
899@@ -40,14 +40,14 @@
900 endsw
901 set bodyfile="$1"
902 set atype=`echo $2 | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
903-set name=$3
904+set name="$3"
905 if ($#argv > 3) then
906 set site="$4"
907 else
908 set site=""
909 endif
910 if ($#argv > 4) then
911- set dir=$5
912+ set dir="$5"
913 else
914 set dir=""
915 endif
916@@ -62,10 +62,10 @@
917 set server=""
918 endif
919
920-if ("$server" == "" && $atype == "mail-server") then
921+if ("$server" == "" && "$atype" == "mail-server") then
922 # Backward compatibility with some broken stuff
923- set server=${name}@${site}
924- echo WARNING -- old style mailserver syntax, using server $server
925+ set server="${name}@${site}"
926+ echo WARNING -- old style mailserver syntax, using server "$server"
927 endif
928
929 set ctype="`grep -i content-type: $bodyfile | sed -e 's/............: //'`"
930@@ -75,6 +75,10 @@
931 set pass=""
932 set TMPDIR=${METAMAIL_TMPDIR}/XXXternal.$$
933 mkdir $TMPDIR
934+if ( $status != 0 ) then
935+ echo Error creating temporary directory
936+ exit 1
937+endif
938 pushd $TMPDIR
939 set NEWNAME="mm.ext.$$"
940 set NEEDSCONFIRMATION=1
941@@ -90,7 +94,16 @@
942 echo automatically using the FTP protocol to a site on the network.
943 breaksw
944 case mail-server:
945- cat > ${METAMAIL_TMPDIR}/ext.junk.$$ <<!
946+ # Generate temporary file name:
947+ if ( -x /bin/mktemp ) then
948+ set TmpExtJunk=`/bin/mktemp ${METAMAIL_TMPDIR}/ext.junk.XXXXXXX` || exit 1
949+ else if ( -x /usr/bin/mktemp ) then
950+ set TmpExtJunk=`/usr/bin/mktemp ${METAMAIL_TMPDIR}/ext.junk.XXXXXXX` || exit 1
951+ else
952+ set TmpExtJunk=${METAMAIL_TMPDIR}/ext.junk.$$
953+ rm -rf $TmpExtJunk
954+ endif
955+ cat > $TmpExtJunk <<!
956 This mail message contains a POINTER (reference) to data that is
957 not included in the message itself. Rather, the data can be retrieved
958 by sending a special mail message to a mail server on the network.
959@@ -102,13 +115,13 @@
960 This is the message that will be sent if you choose to go ahead and
961 retreive the external data:
962
963-Subject: Automated Mail Server Request
964-To: ${server}
965-
966 !
967- sed -e 1,/^\$/d < $bodyfile >> ${METAMAIL_TMPDIR}/ext.junk.$$
968- ${METAMAIL_PAGER} ${METAMAIL_TMPDIR}/ext.junk.$$
969- rm ${METAMAIL_TMPDIR}/ext.junk.$$
970+ echo Subject: Automated Mail Server Request >> $TmpExtJunk
971+ echo To: "$server" >> $TmpExtJunk
972+ echo "" >> $TmpExtJunk
973+ sed -e 1,/^\$/d < $bodyfile >> $TmpExtJunk
974+ ${METAMAIL_PAGER} $TmpExtJunk
975+ rm $TmpExtJunk
976 breaksw
977 default:
978 # IGNORE ALL THE OTHERS -- AUTOMATIC FOR LOCAL-FILE, AFS.
979@@ -157,17 +170,26 @@
980 else
981 set MODECMD="type $mode"
982 endif
983+ # Generate temporary file name:
984+ if ( -x /bin/mktemp ) then
985+ set TmpFtp=`/bin/mktemp ${METAMAIL_TMPDIR}/mm.ftp.XXXXXXX` || exit 1
986+ else if ( -x /usr/bin/mktemp ) then
987+ set TmpFtp=`/usr/bin/mktemp ${METAMAIL_TMPDIR}/mm.ftp.XXXXXXX` || exit 1
988+ else
989+ set TmpFtp=${METAMAIL_TMPDIR}/mm.ftp.$$
990+ rm -rf $TmpFtp
991+ endif
992+ echo open "$site" > $TmpFtp
993+ echo user "$username" "$pass" >> $TmpFtp
994+ echo "$DIRCMD" >> $TmpFtp
995+ echo "$MODECMD" >> $TmpFtp
996+ echo get "$name" "$NEWNAME" >> $TmpFtp
997+ echo quit >> $TmpFtp
998 echo OBTAINING MESSAGE BODY USING FTP
999- echo SITE: $site USER $username
1000- $FTP -n <<!
1001-open $site
1002-user $username $pass
1003-$DIRCMD
1004-$MODECMD
1005-get $name $NEWNAME
1006-quit
1007-!
1008- if (! -e $NEWNAME) then
1009+ echo SITE: "$site" USER "$username"
1010+ $FTP -n < $TmpFtp
1011+ rm -f $TmpFtp
1012+ if (! -e "$NEWNAME") then
1013 echo FTP failed.
1014 cd ${METAMAIL_TMPDIR}
1015 rm -rf $TMPDIR
1016@@ -176,14 +198,14 @@
1017 breaksw
1018 case afs:
1019 case local-file:
1020- if (! -e $name) then
1021+ if (! -e "$name") then
1022 echo local file not found
1023 cd ${METAMAIL_TMPDIR}
1024 rm -rf $TMPDIR
1025 exit -1
1026 endif
1027- set NEWNAME=$name
1028- echo GETTING BODY FROM FILE NAMED: $NEWNAME
1029+ set NEWNAME="$name" # Note that this is not trusted data...
1030+ echo GETTING BODY FROM FILE NAMED: "$NEWNAME"
1031 breaksw
1032 case mail-server: # A very special case
1033 if ("$bodyfile" == "") then
1034@@ -192,12 +214,12 @@
1035 rm -rf $TMPDIR
1036 exit -1
1037 endif
1038- echo Subject: Automated Mail Server Request > $NEWNAME
1039- echo To: ${server} >> $NEWNAME
1040- echo "" >> $NEWNAME
1041- sed -e 1,/^\$/d < $bodyfile >> $NEWNAME
1042- echo "" >> $NEWNAME
1043- /usr/lib/sendmail -t < $NEWNAME
1044+ echo Subject: Automated Mail Server Request > "$NEWNAME"
1045+ echo To: ${server} >> "$NEWNAME"
1046+ echo "" >> "$NEWNAME"
1047+ sed -e 1,/^\$/d < $bodyfile >> "$NEWNAME"
1048+ echo "" >> "$NEWNAME"
1049+ /usr/lib/sendmail -t < "$NEWNAME"
1050 if ($status) then
1051 echo sendmail failed
1052 cd ${METAMAIL_TMPDIR}
1053@@ -206,7 +228,7 @@
1054 endif
1055 cd ${METAMAIL_TMPDIR}
1056 rm -rf $TMPDIR
1057- echo Your $ctype data has been requested from a mail server.
1058+ echo Your "$ctype" data has been requested from a mail server.
1059 exit 0
1060 default:
1061 echo UNRECOGNIZED ACCESS-TYPE
1062@@ -214,19 +236,19 @@
1063 rm -rf $TMPDIR
1064 exit -1
1065 endsw
1066-if ($cenc == base64) then
1067- mimencode -u -b < $NEWNAME > OUT
1068- mv OUT $NEWNAME
1069-else if ($cenc == quoted-printable) then
1070- mimencode -u -q < $NEWNAME > OUT
1071- mv OUT $NEWNAME
1072+if ("$cenc" == base64) then
1073+ mimencode -u -b < "$NEWNAME" > OUT
1074+ mv OUT "$NEWNAME"
1075+else if ("$cenc" == quoted-printable) then
1076+ mimencode -u -q < "$NEWNAME" > OUT
1077+ mv OUT "$NEWNAME"
1078 endif
1079
1080 popd
1081-if ($atype == "local-file") then
1082- metamail -p -b -c "$ctype" $NEWNAME
1083+if ("$atype" == "local-file") then
1084+ metamail -p -b -c "$ctype" "$NEWNAME"
1085 else
1086- metamail -p -b -c "$ctype" $TMPDIR/$NEWNAME
1087+ metamail -p -b -c "$ctype" "$TMPDIR/$NEWNAME"
1088 endif
1089
1090 if ($status) then
1091@@ -236,14 +258,14 @@
1092 exit -1
1093 endif
1094
1095-if ($NEWNAME != $name) then
1096+if ("$NEWNAME" != "$name") then
1097 echo ""
1098- echo The data just displayed is stored in the file $TMPDIR/$NEWNAME
1099+ echo The data just displayed is stored in the file "$TMPDIR/$NEWNAME"
1100 echo "Do you want to delete it?"
1101- rm -i $TMPDIR/$NEWNAME
1102+ rm -i "$TMPDIR/$NEWNAME"
1103 endif
1104
1105-if (! -e ${TMPDIR}/${NEWNAME}) then
1106+if (! -e "${TMPDIR}/${NEWNAME}") then
1107 cd ${METAMAIL_TMPDIR}
1108 rmdir $TMPDIR
1109 endif
1110diff -d -r -u -P mm2.7.orig/src/bin/showpartial mm2.7/src/bin/showpartial
1111--- mm2.7.orig/src/bin/showpartial Mon Jun 15 00:30:47 1998
1112+++ mm2.7/src/bin/showpartial Sat Jun 20 14:25:55 1998
1113@@ -14,78 +14,84 @@
1114 set file="$1"
1115 # This next line is because message-id can contain weird chars
1116 set id=`echo $2 | tr -d \!\$\&\*\(\)\|\'\"\;\/\<\>\\`
1117-@ partnum = $3
1118-if ($#argv == 3 || $4 == "") then
1119+@ partnum = "$3"
1120+if ($#argv == 3 || "$4" == "") then
1121 set totalnum=-1
1122 else
1123 @ totalnum = "$4"
1124 endif
1125
1126-if (! -d $TREEROOT) then
1127+if ( -d $TREEROOT) then
1128+ if (! -o $TREEROOT) then
1129+ echo Error: You do not own $TREEROOT
1130+ exit -1
1131+ endif
1132+else
1133 mkdir $TREEROOT
1134 if ($status) then
1135 echo mkdir $TREEROOT failed
1136 exit -1
1137 endif
1138 endif
1139-if (! -d ${TREEROOT}/$id) then
1140- mkdir ${TREEROOT}/$id
1141+if (! -d "${TREEROOT}/$id") then
1142+ mkdir "${TREEROOT}/$id"
1143 if ($status) then
1144- echo mkdir ${TREEROOT}/$id failed
1145+ echo mkdir "${TREEROOT}/$id" failed
1146 exit -1
1147 endif
1148 endif
1149-cp $file ${TREEROOT}/$id/$partnum
1150+cp "$file" "${TREEROOT}/$id/$partnum"
1151 if ($status) then
1152- echo cp $file ${TREEROOT}/$id/$partnum failed
1153+ echo cp "$file" "${TREEROOT}/$id/$partnum" failed
1154 exit -1
1155 endif
1156-if ($totalnum == -1) then
1157- if (-e ${TREEROOT}/$id/CT) then
1158- set totalnum=`cat ${TREEROOT}/$id/CT`
1159+if ("$totalnum" == -1) then
1160+ if (-e "${TREEROOT}/$id/CT") then
1161+ set totalnum=`cat "${TREEROOT}/$id/CT"`
1162 else
1163 set totalnum=-1 #GROSS HACK
1164 endif
1165 else
1166- echo $totalnum >! ${TREEROOT}/$id/CT
1167+ echo "$totalnum" >! "${TREEROOT}/$id/CT"
1168 endif
1169 # Slightly bogus here -- the shell messes up the newlines in the headers
1170 # If you put $MM_HEADERS in quotes, it doesn't help.
1171-# if ($partnum == 1) then
1172-# echo $MM_HEADERS > ${TREEROOT}/$id/HDRS
1173+# Note that this could very well constitute a security risk...
1174+# if ("$partnum" == 1) then
1175+# echo $MM_HEADERS > "${TREEROOT}/$id/HDRS"
1176 # endif
1177 set found=0
1178 set ix=1
1179 set list=""
1180-set limit=$totalnum
1181-if ($limit == -1) set limit=25
1182-while ($ix <= $limit)
1183- if (-e ${TREEROOT}/$id/$ix) then
1184+set limit="$totalnum"
1185+if ("$limit" == -1) set limit=25
1186+while ("$ix" <= "$limit")
1187+ if (-e "${TREEROOT}/$id/$ix") then
1188 set list="$list $ix"
1189 @ found ++
1190 endif
1191 @ ix ++
1192 end
1193-if ($found == $totalnum) then
1194- cd ${TREEROOT}/$id
1195- cat $list > ${TREEROOT}/$id/FULL
1196+if ("$found" == "$totalnum") then
1197+ cd "${TREEROOT}/$id"
1198+ cat "$list" > "${TREEROOT}/$id/FULL"
1199 # cat ${TREEROOT}/$id/HDRS $list > ${TREEROOT}/$id/FULL
1200- rm $list
1201- echo All parts of this ${totalnum}-part message have now been read.
1202- metamail -d ${TREEROOT}/$id/FULL
1203+ rm "$list"
1204+ echo All parts of this "${totalnum}"-part message have now been read.
1205+ metamail -d "${TREEROOT}/$id/FULL"
1206 echo WARNING: To save space, the full file is now being deleted.
1207- echo You will have to read all $totalnum parts again to see the full message again.
1208- rm ${TREEROOT}/$id/FULL
1209- rm ${TREEROOT}/$id/CT
1210-# rm ${TREEROOT}/$id/HDRS
1211+ echo You will have to read all "$totalnum" parts again to see the full message again.
1212+ rm "${TREEROOT}/$id/FULL"
1213+ rm "${TREEROOT}/$id/CT"
1214+# rm "${TREEROOT}/$id/HDRS"
1215 cd
1216- rmdir ${TREEROOT}/$id
1217- rmdir ${TREEROOT} >& /dev/null
1218+ rmdir "${TREEROOT}/$id"
1219+ rmdir "${TREEROOT}" >& /dev/null
1220 else
1221- if (${totalnum} == -1) then
1222- echo So far you have only read $found of the several parts of this message.
1223+ if ("${totalnum}" == -1) then
1224+ echo So far you have only read "$found" of the several parts of this message.
1225 else
1226- echo So far you have only read $found of the $totalnum parts of this message.
1227+ echo So far you have only read "$found" of the "$totalnum" parts of this message.
1228 endif
1229 echo When you have read them all, then you will see the message in full.
1230 endif
1231diff -d -r -u -P mm2.7.orig/src/bin/showpicture mm2.7/src/bin/showpicture
1232--- mm2.7.orig/src/bin/showpicture Mon Jun 15 00:30:47 1998
1233+++ mm2.7/src/bin/showpicture Sat Jun 20 14:27:26 1998
1234@@ -23,7 +23,7 @@
1235 set X_VIEWER="xloadimage -view -quiet -geometry +1+1"
1236 # set X_VIEWER="xv -geometry +1+1"
1237 endif
1238-if ($1 == "-viewer" && $#argv > 1) then
1239+if ("$1" == "-viewer" && $#argv > 1) then
1240 set X_VIEWER = "$2"
1241 shift
1242 shift
1243@@ -40,7 +40,15 @@
1244 echo be able to see the picture properly.
1245 echo ""
1246 if ($MM_NOTTTY) then
1247- set fname=${METAMAIL_TMPDIR}/sp.$$
1248+ # Generate file name:
1249+ if ( -x /bin/mktemp ) then
1250+ set fname=`/bin/mktemp ${METAMAIL_TMPDIR}/sp.XXXXXXX` || exit 1
1251+ else if ( -x /usr/bin/mktemp ) then
1252+ set fname=`/usr/bin/mktemp ${METAMAIL_TMPDIR}/sp.XXXXXXX` || exit 1
1253+ else
1254+ set fname=${METAMAIL_TMPDIR}/sp.$$
1255+ rm -rf $fname
1256+ endif
1257 echo "The picture is being automatically stored in the file $fname"
1258 echo "If you do not want this file, please delete it."
1259 else
1260@@ -50,20 +58,28 @@
1261 while ( 1 == 1)
1262 echo -n "File name:"
1263 set fname=$<
1264- if (! -f $fname) then
1265+ if (! -f "$fname") then
1266 break
1267 else
1268 echo "$fname already exists. Try again"
1269 endif
1270 end
1271 endif
1272- cp $1 $fname
1273- if ($status == 0) echo Wrote file $fname
1274+ cp "$1" "$fname"
1275+ if ($status == 0) echo Wrote file "$fname"
1276 exit 0
1277 endif
1278
1279 if ($#argv == 0) then
1280- set SQUIRREL=${METAMAIL_TMPDIR}/sp.$$
1281+ # Generate file name:
1282+ if ( -x /bin/mktemp ) then
1283+ set SQUIRREL=`/bin/mktemp ${METAMAIL_TMPDIR}/sp.XXXXXXX` || exit 1
1284+ else if ( -x /usr/bin/mktemp ) then
1285+ set SQUIRREL=`/usr/bin/mktemp ${METAMAIL_TMPDIR}/sp.XXXXXXX` || exit 1
1286+ else
1287+ set SQUIRREL=${METAMAIL_TMPDIR}/sp.$$
1288+ rm -rf $SQUIRREL
1289+ endif
1290 cat > $SQUIRREL
1291 else
1292 set SQUIRREL="$*"
1293diff -d -r -u -P mm2.7.orig/src/bin/sun-audio-file mm2.7/src/bin/sun-audio-file
1294--- mm2.7.orig/src/bin/sun-audio-file Mon Jun 15 00:30:47 1998
1295+++ mm2.7/src/bin/sun-audio-file Sat Jun 20 14:28:11 1998
1296@@ -12,7 +12,7 @@
1297 exit 1
1298 endif
1299
1300-uudecode -o $fn < $1
1301+uudecode -o $fn < "$1"
1302
1303 audiotool $fn
1304-rm -f $fn $1
1305+rm -f $fn "$1"
1306diff -d -r -u -P mm2.7.orig/src/bin/sun-message.csh mm2.7/src/bin/sun-message.csh
1307--- mm2.7.orig/src/bin/sun-message.csh Mon Jun 15 00:30:47 1998
1308+++ mm2.7/src/bin/sun-message.csh Sat Jun 20 14:29:41 1998
1309@@ -8,6 +8,10 @@
1310 # $2 is untrustworthy data. Quote it.
1311 #
1312 mkdir /tmp/decode.$$
1313+if ( $status != 0 ) then
1314+ echo "Error: cannot create temporary directory"
1315+ exit 1
1316+endif
1317 cd /tmp/decode.$$
1318
1319 if (! $?METAMAIL_PAGER) then
1320@@ -21,7 +25,7 @@
1321 exit 1
1322 endif
1323
1324- uudecode -o $fn $1
1325+ uudecode -o $fn "$1"
1326
1327 echo "The following file was uudecoded:"
1328 echo ""
1329@@ -40,21 +44,21 @@
1330 echo -n "Which do you prefer (1 - 3)? [$defans] "
1331
1332 set ans = $<
1333- if (x$ans == x) then
1334+ if ("x$ans" == x) then
1335 set ans = $defans
1336 endif
1337- if ($ans == 3) then
1338- rm $1
1339+ if ("$ans" == 3) then
1340+ rm "$1"
1341 cd /tmp; /bin/rm -rf /tmp/decode.$$
1342 exit 0
1343- else if ($ans == 1) then
1344+ else if ("$ans" == 1) then
1345 ${METAMAIL_PAGER} $fn
1346- else if ($ans == 2) then
1347+ else if ("$ans" == 2) then
1348 set nfn = ""
1349 echo -n "Save as: $HOME/"
1350 set nfn = $<
1351- if (x$nfn != x) then
1352- /bin/cp $fn ${HOME}/$nfn
1353+ if ("x$nfn" != x) then
1354+ /bin/cp $fn "${HOME}/$nfn"
1355 else
1356 echo "Not Saved."
1357 endif
1358@@ -64,7 +68,7 @@
1359 set defans = "3"
1360 end
1361 else
1362- ${METAMAIL_PAGER} $1
1363+ ${METAMAIL_PAGER} "$1"
1364 endif
1365
1366
1367diff -d -r -u -P mm2.7.orig/src/bin/sun-to-mime mm2.7/src/bin/sun-to-mime
1368--- mm2.7.orig/src/bin/sun-to-mime Mon Jun 15 00:30:47 1998
1369+++ mm2.7/src/bin/sun-to-mime Sat Jun 20 14:31:12 1998
1370@@ -8,10 +8,19 @@
1371 set METAMAIL_TMPDIR=/tmp
1372 endif
1373
1374-set TMPFILE=${METAMAIL_TMPDIR}/suntomime.$$
1375+# Generate temporary file name:
1376+if ( -x /bin/mktemp ) then
1377+ set TMPFILE=`/bin/mktemp ${METAMAIL_TMPDIR}/suntomime.XXXXXXX` || exit 1
1378+else if ( -x /usr/bin/mktemp ) then
1379+ set TMPFILE=`/usr/bin/mktemp ${METAMAIL_TMPDIR}/suntomime.XXXXXXX` || exit 1
1380+else
1381+ set TMPFILE=${METAMAIL_TMPDIR}/suntomime.$$
1382+ rm -rf $TMPFILE
1383+endif
1384+
1385 echo "Content-type: multipart/mixed; boundary=--------" > $TMPFILE
1386 echo "" >> $TMPFILE
1387-sed -e 's/X-Sun-Data-Type:/Content-type:/' >> $TMPFILE < $1
1388+sed -e 's/X-Sun-Data-Type:/Content-type:/' >> $TMPFILE < "$1"
1389 echo "------------" >> $TMPFILE
1390 #metamail -d -z $TMPFILE
1391 metamail -z $TMPFILE
1392diff -d -r -u -P mm2.7.orig/src/bin/sun2mime mm2.7/src/bin/sun2mime
1393--- mm2.7.orig/src/bin/sun2mime Mon Jun 15 00:30:47 1998
1394+++ mm2.7/src/bin/sun2mime Sat Jun 20 14:31:40 1998
1395@@ -9,7 +9,16 @@
1396 if [ x$METAMAIL_TMPDIR = x ]; then
1397 METAMAIL_TMPDIR=/tmp
1398 fi
1399-TMPFILE=${METAMAIL_TMPDIR}/suntomime.$$
1400+
1401+# Generate temporary file name:
1402+if [ -x /bin/mktemp ] ; then
1403+ TMPFILE=`/bin/mktemp ${METAMAIL_TMPDIR}/suntomime.XXXXXXX` || exit 1
1404+elif [ -x /usr/bin/mktemp ] ; then
1405+ TMPFILE=`/usr/bin/mktemp ${METAMAIL_TMPDIR}/suntomime.XXXXXXX` || exit 1
1406+else
1407+ TMPFILE=${METAMAIL_TMPDIR}/suntomime.$$
1408+ rm -rf $TMPFILE
1409+fi
1410
1411 /bin/nawk '
1412 BEGIN { printf("Content-type: multipart/mixed; boundary=--------\n\n")
1413@@ -36,7 +45,7 @@
1414 print
1415 }
1416 END { printf("----------\n") }
1417-' $1 > $TMPFILE
1418+' "$1" > $TMPFILE
1419
1420 metamail -z $TMPFILE
1421 rm -f $TMPFILE
1422diff -d -r -u -P mm2.7.orig/src/metamail/mailto.c mm2.7/src/metamail/mailto.c
1423--- mm2.7.orig/src/metamail/mailto.c Mon Jun 15 00:30:47 1998
1424+++ mm2.7/src/metamail/mailto.c Sat Jun 20 16:57:20 1998
1425@@ -61,6 +61,7 @@
1426 #endif
1427
1428 extern char *malloc(), *realloc(), *index(), *getmyname();
1429+extern FILE *Fopen();
1430 struct mailpart *CreateNewPart();
1431
1432 /* The main data structure for the multiple parts of the mail */
1433@@ -208,7 +209,7 @@
1434 pager = getenv("PAGER");
1435
1436 strcpy(TmpName, tmpname());
1437- fp = fopen(TmpName, "w");
1438+ fp = Fopen(TmpName, "w");
1439 if (!fp) fp = stdout;
1440 fprintf(fp, "The following tilde escapes are BSD-mail-compatible:\n");
1441 fprintf(fp, "~? Show help on tilde escapes\n");
1442@@ -594,7 +595,7 @@
1443 }
1444 FirstPart = NewPart();
1445 CurrentPart = FirstPart;
1446- fpout = fopen(CurrentPart->filename, "w");
1447+ fpout = Fopen(CurrentPart->filename, "w");
1448 if (!fpout) {
1449 fprintf(stderr, "mailto: Can't open temporary file %s\n", CurrentPart->filename);
1450 cleanexit(-1);
1451@@ -681,7 +682,7 @@
1452 CurrentPart->next = NewPart();
1453 CurrentPart->next->prev = CurrentPart;
1454 CurrentPart = CurrentPart->next;
1455- fpout = fopen(CurrentPart->filename, "w");
1456+ fpout = Fopen(CurrentPart->filename, "w");
1457 if (!fpout) {
1458 fprintf(stderr, "mailto: Can't open temporary file %s\n", CurrentPart->filename);
1459 cleanexit(-1);
1460@@ -720,7 +721,7 @@
1461 CurrentPart = CurrentPart->next;
1462 CurrentPart->istext = 0;
1463 CurrentPart->content_type = "message/rfc822";
1464- fpout = fopen(CurrentPart->filename, "w");
1465+ fpout = Fopen(CurrentPart->filename, "w");
1466 if (!fpout) {
1467 fprintf(stderr, "mailto: Cannot open temporary file %s\n", CurrentPart->filename);
1468 break;
1469@@ -732,7 +733,7 @@
1470 CurrentPart->next = NewPart();
1471 CurrentPart->next->prev = CurrentPart;
1472 CurrentPart = CurrentPart->next;
1473- fpout = fopen(CurrentPart->filename, "w");
1474+ fpout = Fopen(CurrentPart->filename, "w");
1475 if (!fpout) {
1476 fprintf(stderr, "mailto: Can't open temporary file %s\n", CurrentPart->filename);
1477 cleanexit(-1);
1478@@ -811,11 +812,11 @@
1479 char Cmd[TMPFILE_NAME_SIZE + 15];
1480 char *s=tmpname();
1481 fclose(fpout);
1482- fptmp = fopen(s, "w");
1483+ fptmp = Fopen(s, "w");
1484 WriteOutMessage(fptmp, ToList, Subject, CCList, FirstPart);
1485 TempCloseStyles(fptmp);
1486 fclose(fptmp);
1487- fpout = fopen(CurrentPart->filename, "a");
1488+ fpout = Fopen(CurrentPart->filename, "a");
1489 if (!fpout) {
1490 fprintf(stderr, "mailto: Can't open temporary file %s\n", CurrentPart->filename);
1491 cleanexit(-1);
1492@@ -899,7 +900,7 @@
1493 char *fname;
1494 fclose(fpout);
1495 fname = start;
1496- fptmp = fopen(fname, "w");
1497+ fptmp = Fopen(fname, "w");
1498 WriteOutMessage(fptmp, ToList, Subject, CCList, FirstPart);
1499 TempCloseStyles(fptmp);
1500 if(fclose(fptmp)) {
1501@@ -907,7 +908,7 @@
1502 } else {
1503 printf("Wrote draft to %s\n", fname);
1504 }
1505- fpout = fopen(CurrentPart->filename, "a");
1506+ fpout = Fopen(CurrentPart->filename, "a");
1507 if (!fpout) {
1508 fprintf(stderr, "mailto: Can't open temporary file %s\n", CurrentPart->filename);
1509 cleanexit(-1);
1510@@ -972,7 +973,7 @@
1511 CurrentPart = CurrentPart->next;
1512 CurrentPart->istext = 0;
1513 CurrentPart->content_type = "message/rfc822";
1514- fpout = fopen(CurrentPart->filename, "w");
1515+ fpout = Fopen(CurrentPart->filename, "w");
1516 if (!fpout) {
1517 fprintf(stderr, "mailto: Cannot open temporary file %s\n", CurrentPart->filename);
1518 break;
1519@@ -994,7 +995,7 @@
1520 CurrentPart->next = NewPart();
1521 CurrentPart->next->prev = CurrentPart;
1522 CurrentPart = CurrentPart->next;
1523- fpout = fopen(CurrentPart->filename, "w");
1524+ fpout = Fopen(CurrentPart->filename, "w");
1525 if (!fpout) {
1526 fprintf(stderr, "mailto: Can't open temporary file %s\n", CurrentPart->filename);
1527 cleanexit(-1);
1528@@ -1476,7 +1477,7 @@
1529 char DeadFile[1000];
1530
1531 sprintf(DeadFile, "%s/dead.letter", gethome());
1532- fp = fopen(DeadFile, "w");
1533+ fp = Fopen(DeadFile, "w");
1534 WriteOutMessage(fp, ToList, Subject, CCList, FirstPart);
1535 if(fclose(fp)) {
1536 perror("Could not write ~/dead.letter\n");
1537@@ -1776,7 +1777,7 @@
1538 printf("Cannot read %s, data insertion cancelled\n", sdum);
1539 return(NULL);
1540 }
1541- fpo = fopen(mp->filename, "w");
1542+ fpo = Fopen(mp->filename, "w");
1543 if (!fpo) {
1544 printf("Cannot open temporary file, data insertion cancelled\n");
1545 return(NULL);
1546@@ -1794,7 +1795,7 @@
1547 int ct;
1548 printf("\nEnter the MIME Content-type value for the data from file %s\n (type '?' for a list of locally-valid content-types): ", sdum);
1549 fflush(stdout);
1550- gets(LineBuf);
1551+ fgets(LineBuf, sizeof(LineBuf), stdin);
1552 if (index(LineBuf, '/')) {
1553 char lc[100], *s, AnsBuf[100];
1554 strcpy(lc, LineBuf);
1555@@ -1812,7 +1813,7 @@
1556 }
1557 if (mc) break;
1558 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);
1559- s = gets(AnsBuf);
1560+ s = fgets(AnsBuf, sizeof(AnsBuf), stdin);
1561 while (s && *s && isspace((unsigned char) *s)) ++s;
1562 if (s && (*s == 'y' || *s == 'Y')) break;
1563 continue;
1564@@ -1939,7 +1940,7 @@
1565 mp->encoding_type_needed = ENC_NONE;
1566 }
1567 newfilename = tmpname();
1568- fpout = fopen(newfilename, "w");
1569+ fpout = Fopen(newfilename, "w");
1570 if (!fpout) {
1571 fprintf(stderr, "Cannot open file %s for writing, no data included.\n", newfilename);
1572 free(CmdBuf);
1573@@ -2109,7 +2110,7 @@
1574 ContainsEightBitChar(FirstPart->filename)) {
1575 FirstPart->encoding_type_needed = ENC_QP;
1576 }
1577- fpout = fopen(FirstPart->filename, "a");
1578+ fpout = Fopen(FirstPart->filename, "a");
1579 free(CmdBuf);
1580 free(CmdBuf2);
1581 return;
1582@@ -2159,7 +2160,7 @@
1583 lastmp = mp;
1584 mp = mp->next;
1585 }
1586- fpout = fopen(lastmp->filename, "a");
1587+ fpout = Fopen(lastmp->filename, "a");
1588 free(CmdBuf);
1589 free(CmdBuf2);
1590 }
1591diff -d -r -u -P mm2.7.orig/src/metamail/metamail.c mm2.7/src/metamail/metamail.c
1592--- mm2.7.orig/src/metamail/metamail.c Mon Jun 15 00:30:47 1998
1593+++ mm2.7/src/metamail/metamail.c Sat Jun 20 16:54:29 1998
1594@@ -112,6 +112,7 @@
1595
1596 char *FindParam();
1597 extern FILE *popen();
1598+extern FILE *Fopen();
1599 static char *nomem = "Out of memory!";
1600 static char *mmversion = MM_VERSTRING;
1601 static char *NoAskDefault = "text,text/plain,text/richtext";
1602@@ -580,7 +581,7 @@
1603 int overwriteans = -1;
1604 do {
1605 printf("File %s exists. Do you want to overwrite it (y/n) ?\n", Fname);
1606- s = gets(AnsBuf);
1607+ s = fgets(AnsBuf, sizeof(AnsBuf), stdin);
1608 if (!s) {
1609 overwriteans = 0;
1610 } else {
1611@@ -646,7 +647,7 @@
1612 if (Fname[0] == 0 || Fname[0] == '\n') {
1613 ConsumeRestOfPart(NULL);
1614 } else {
1615- fp = fopen(Fname, WRITE_BINARY);
1616+ fp = Fopen(Fname, WRITE_BINARY);
1617 if (!fp) ExitWithError("Cannot open temporary file");
1618 TranslateInputToOutput(InputFP, fp, EncodingCode, ContentType);
1619 ecode = fclose(fp);
1620@@ -961,7 +962,7 @@
1621 /* Create it, ugh. Also needs to affect later command. */
1622 MkTmpFileName(TmpName);
1623 DeleteSourceFileWhenDone = 1;
1624- fptmp = fopen(TmpName, WRITE_BINARY);
1625+ fptmp = Fopen(TmpName, WRITE_BINARY);
1626 if (!fptmp) ExitWithError("Can't open temporary file\n");
1627 while (fgets(LineBuf, LINE_BUF_SIZE, stdin)) {
1628 fputs(LineBuf, fptmp);
1629@@ -1195,7 +1196,7 @@
1630 {
1631 int j;
1632 FILE *outfp;
1633- outfp = fopen(SquirrelFile, WRITE_BINARY);
1634+ outfp = Fopen(SquirrelFile, WRITE_BINARY);
1635 if (!outfp) {
1636 fprintf(stderr, "Cannot open %s to squirrel away a portion of a multipart/alternative\n", SquirrelFile);
1637 return(-1);
1638@@ -1799,7 +1800,7 @@
1639 nameBuf[(cp - def) + 4] = 0;
1640 cp++; /* Now points to value part of environment string. */
1641
1642- if ((envFile = fopen(nameBuf, "w")) == NULL) {
1643+ if ((envFile = Fopen(nameBuf, "w")) == NULL) {
1644 return(2);
1645 }
1646
1647@@ -1824,7 +1825,7 @@
1648 } else {
1649 printf("This message contains '%s'-format data.\nDo you want to view it using the '%s' command (y/n) [y] ? ", ctype, ShortCommand(progname));
1650 }
1651- s = gets(AnsBuf);
1652+ s = fgets(AnsBuf, sizeof(AnsBuf), stdin);
1653 if (!s) return(0); /* EOF */
1654 while (s && *s && isspace((unsigned char) *s)) ++s;
1655 if (*s == 'y' || *s == 'Y' || !*s || *s == '\n') return(1);
1656@@ -2037,7 +2038,7 @@
1657 } else {
1658 /* What follows is REALLY bogus, but all my encoding stuff is pipe-oriented right now... */
1659 MkTmpFileName(TmpFile);
1660- fp = fopen(TmpFile, WRITE_BINARY);
1661+ fp = Fopen(TmpFile, WRITE_BINARY);
1662 if (!fp) {
1663 fprintf(stderr, "Could not open temporary file\n");
1664 } else {
1665@@ -2192,7 +2193,7 @@
1666 strcpy(thispart->fname, TmpFileNameBuf);
1667 WriteTmpFile(thispart->fname, thispart->ctype);
1668 strcat(TmpFileNameBuf, "H");
1669- headfp = fopen(TmpFileNameBuf, "w");
1670+ headfp = Fopen(TmpFileNameBuf, "w");
1671 if (headfp) {
1672 fputs(mailheaders+12, headfp);
1673 /* The +12 gets rid of MM_HEADERS=\n */
1674@@ -2298,7 +2299,7 @@
1675 FILE *fpout;
1676 int retval = 0;
1677
1678- fpout = fopen(fname, WRITE_BINARY);
1679+ fpout = Fopen(fname, WRITE_BINARY);
1680 if (!fpout) {
1681 perror("WriteTmpFile");
1682 ExitWithError("Can't create temporary file");
1683@@ -2519,7 +2520,7 @@
1684 FILE *script;
1685
1686 MkTmpFileName(nameBuf);
1687- if ((script = fopen(nameBuf, "w")) == NULL) {
1688+ if ((script = Fopen(nameBuf, "w")) == NULL) {
1689 fprintf(stderr, "Unable to open %s for writing\n", nameBuf);
1690 exit(1);
1691 }
1692diff -d -r -u -P mm2.7.orig/src/metamail/shared.c mm2.7/src/metamail/shared.c
1693--- mm2.7.orig/src/metamail/shared.c Mon Jun 15 00:30:47 1998
1694+++ mm2.7/src/metamail/shared.c Sat Jun 20 16:51:54 1998
1695@@ -1,6 +1,11 @@
1696 #include <stdio.h>
1697 #include <ctype.h>
1698 #include <config.h>
1699+#include <unistd.h>
1700+#include <string.h>
1701+#include <errno.h>
1702+#include <fcntl.h>
1703+#include <sys/stat.h>
1704 #ifdef SYSV
1705 #include <unistd.h>
1706 #include <sys/utsname.h>
1707@@ -116,5 +121,55 @@
1708 initialized = 1;
1709 }
1710 return(hostname);
1711+}
1712+
1713+
1714+/* This fopen wrapper function is designed to avoid /tmp-file race
1715+ * conditions where a temporary filename is created and somebody
1716+ * throws a link in your way before the fopen(...,"w"). This
1717+ * would only happen if another user on the system were actively
1718+ * trying to trick you into destroying files.
1719+ * Sorry, but "a" mode is not really handled any safer than fopen,
1720+ * since I really have no criterium for deciding what files are
1721+ * OK to write to. */
1722+FILE *Fopen(Fopen_path,Fopen_mode)
1723+char *Fopen_path; char *Fopen_mode;
1724+{
1725+#ifdef MSDOS
1726+return(fopen(Fopen_path,Fopen_mode));
1727+#else
1728+int Fopen_fd;
1729+struct stat Fopen_sb;
1730+int Fopen_appendmode = 0;
1731+int Fopen_readmode = 0;
1732+int Fopen_openflags = 0;
1733+int Fopen_r;
1734+if ( strchr(Fopen_mode,'r') != (char *)0 ) return(fopen(Fopen_path,Fopen_mode));
1735+if ( strchr(Fopen_mode,'a') != (char *)0 ) Fopen_appendmode = 1;
1736+if ( strchr(Fopen_mode,'+') != (char *)0 ) Fopen_readmode = 1;
1737+if ( ( Fopen_appendmode && (strchr(Fopen_mode,'w') != (char *)0) ) ||
1738+ ( (! Fopen_appendmode) && (strchr(Fopen_mode,'w') == (char *)0) ) )
1739+ {
1740+ errno = EINVAL ;
1741+ return( (FILE *)0 );
1742+ }
1743+if ( Fopen_appendmode )
1744+ {
1745+ /* If "a" and file exists, pass it to the real fopen() */
1746+ Fopen_r = stat(Fopen_path,&Fopen_sb) ;
1747+ if ( (Fopen_r != -1) || (errno != ENOENT) )
1748+ return( fopen(Fopen_path,Fopen_mode) );
1749+ }
1750+if ( Fopen_readmode )
1751+ Fopen_openflags = O_RDWR|O_CREAT|O_EXCL ;
1752+else
1753+ Fopen_openflags = O_WRONLY|O_CREAT|O_EXCL ;
1754+if ( Fopen_appendmode ) Fopen_openflags |= O_APPEND ;
1755+remove( Fopen_path );
1756+/* 0666? We'd better hope their umask is safe... */
1757+Fopen_fd = open(Fopen_path,Fopen_openflags,0666);
1758+if ( Fopen_fd > -1 ) return( fdopen(Fopen_fd,Fopen_mode) );
1759+return( (FILE *)0 );
1760+#endif
1761 }
1762
1763diff -d -r -u -P mm2.7.orig/src/metamail/splitmail.c mm2.7/src/metamail/splitmail.c
1764--- mm2.7.orig/src/metamail/splitmail.c Mon Jun 15 00:30:47 1998
1765+++ mm2.7/src/metamail/splitmail.c Sat Jun 20 15:57:02 1998
1766@@ -26,6 +26,7 @@
1767 #include <config.h>
1768 #include <ctype.h>
1769 #include <time.h>
1770+#include <fcntl.h>
1771
1772 #define MINCHUNKSIZE 20000 /* Better be enough to hold the headers, or we die! */
1773 extern char *malloc(), *index(), *getmyname();
1774@@ -243,6 +244,7 @@
1775 char *deliverycmd, *prefix, *SharedHeaders, *SubjectBuf, *id, *MessageID, *bigbuf, *OrigID;
1776 {
1777 FILE *fpout;
1778+ int fd;
1779 char OutputFile[1000];
1780 int code;
1781 #if defined(sequent)
1782@@ -255,7 +257,11 @@
1783 fpout = popen(deliverycmd, "w");
1784 } else {
1785 sprintf(OutputFile, "%s%d", prefix, whichpart);
1786- fpout = fopen(OutputFile, "w");
1787+ /* fpout = fopen(OutputFile, "w"); */
1788+ remove(OutputFile);
1789+ fpout = NULL;
1790+ fd = open(OutputFile, O_WRONLY|O_CREAT|O_EXCL, 0600);
1791+ if ( fd > -1 ) fpout = fdopen(fd, "w");
1792 }
1793 if (!fpout) {
1794 fprintf(stderr, "splitmail: Can't open %s for writing\n", DoDeliver ? deliverycmd : OutputFile);
This page took 0.525222 seconds and 4 git commands to generate.