and all post(8)/send(1) switches
mhmail with no arguments is equivalent to inc'
-bindir=`dirname $0`
+
+#### Find directory of this script. Bourne shell just puts the program
+#### name in $0 if it's found from the PATH, so search that if necessary.
+finddir() {
+ case $0 in
+ */*) dirname $1 ;;
+ * ) IFS=:
+ for d in $PATH; do
+ [ -f "${d:=.}/$1" -a -x "$d/$1" ] && printf "$d" && break
+ done ;;
+ esac
+}
+
+bindir=`finddir $0`
nmhbindir=`cd "${bindir}" && pwd`
+
#### Checks for missing mandatory arguments.
checkforargs() {
if [ ${attacharg} -eq 1 ]; then
use_send=0 ## use post (default) or send (-profile)
sendsw=1 ## to send (default) or not to send
for arg in "$@"; do
- case "${arg}" in
+ case ${arg} in
#### Post and send won't accept -f -or -s because they'd be
#### ambiguous, so no conflicts with them. And they don't have
#### -b, -c, -r, -t. For the new switches that compiled mhmail
-f|-fr|-fro|-from) mhmailswitch=1; fromarg=1 ;;
-hea|-head|-heade|-header|-headerf|-headerfi|-headerfie|-headerfiel|\
-headerfield) mhmailswitch=1; headerfieldarg=1 ;;
- -hel|-help) printf "%s\n" "${usage}"; exit ;;
+ -hel|-help) printf "${usage}\n"; exit ;;
-nose|-nosen|-nosend) mhmailswitch=1; sendsw=0 ;;
-p|-pr|-pro|-prof|-profi|-profil|-profile) mhmailswitch=1; use_send=1 ;;
-resend) printf "mhmail: did you mean -resent instead of -resend?\n" 1>&2
if [ "${body}"x = x ]; then
#### First put message header in the file.
- printf "%s" "${header}" >"${tmpfile}" || exit 2
+ printf "${header}" >"${tmpfile}" || exit 2
tmpfile_size_before=`wc -c "${message_file}"`
#### Now grab the body from stdin. cat >> handles blank lines
if [ "${tmpfileresent}" ]; then
#### Put just the new message header in the file.
- printf "%s" "${header}" >"${tmpfile}" || exit 2
+ printf "${header}" >"${tmpfile}" || exit 2
#### and the body in the file to resend.
printf "${body}" >"${tmpfileresent}" || exit 2
else
#### Put message header and body in the file.
- printf "%s" "${header}${body}" >"${tmpfile}" || exit 2
+ printf "${header}${body}" >"${tmpfile}" || exit 2
fi
fi
if "${post_or_send}" "${tmpfile}" ${postsendargs}; then
exit
else
+ status=$?
+ mv -f "${tmpfile}" dead.letter
printf "Letter saved in dead.letter\n"
- #### exec skips the trap set above.
- [ "${tmpfileresent}" ] && rm -f "${tmpfileresent}"
- exec mv "${tmpfile}" dead.letter
+ exit $status
fi
fi
fi