Viktor Dukhovni: > > > On Dec 22, 2016, at 3:51 AM, St?phane MERLE <stephane.me...@distrigame.com> > > wrote: > > > > First, I save the message in the file descriptor 3 > > > > msg=$(mktemp /tmp/msg.XXXXXX) || exit 75 > > cat > $msg || { rm $msg; exit 75; } > > exec 3< $msg || { rm $msg; exit 75; } > > rm $msg > > > > then I use it by rewinding it : > > > > perl -e 'open IN, "<&", 3; seek(IN, 0, 0);' > > I meant to use "sysseek" there, not "seek" by the way, though > in practice it seems that "seek" has the same effect, the former > is more correct. > > > > > is there a way to rewind without using perl ? > > If you need to avoid tools like Perl that expose system call > interfaces, just go with the "trap" approach and don't "pre-unlink" > the message file. > > msg=$(mktemp /tmp/msg.XXXXXX) > trap "rm -f $msg" EXIT > trap "rm -f $msg; exit 75" HUP INT TERM > cat > $msg > > ... > if grep "..." $msg >/dev/null; then > set -- "$@" "$additional_recipient" > fi > ... > > # Final command. Shell will remove the temp file and exit with > # Sendmail's exit code. > /usr/sbin/sendmail "$@"
And do not forget the '--' in pipe ... argv=/path/to/script -f ${sender} -- ${recipient} Wietse