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

Reply via email to