X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=uip%2Fmhmail;h=96ceddcf86f1f92d7cfd990ff65c9b4b39f95d26;hb=342e35519e925ac0d7b24953bc45028241a7d122;hp=bfcfe895e087a56aff7f16074613403c8d2d54ce;hpb=5200594b19e81959d1d249e9feaad4ec0b02f5c2;p=mmh diff --git a/uip/mhmail b/uip/mhmail index bfcfe89..96ceddc 100755 --- a/uip/mhmail +++ b/uip/mhmail @@ -35,9 +35,23 @@ usage='Usage: mhmail [-t(o)] addrs ... [switches] 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 @@ -83,7 +97,7 @@ else 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 @@ -105,7 +119,7 @@ else -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 @@ -225,7 +239,7 @@ Nmh-Attachment: ${arg} 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 @@ -251,12 +265,12 @@ Nmh-Attachment: ${arg} 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 @@ -272,10 +286,10 @@ Nmh-Attachment: ${arg} 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