On 11Jan2009 17:44, Ed Blackman <e...@edgewood.to> wrote: >> That said, the following will work. Modify accordingly for use with >> enscript. > > Thanks for the concept! Here's what I ended up with: [...] > # Save message contents > MSG="$(cat -)" > # get Subject, striping all occurrances of 'Re: ?' and any initial spaces > SUBJ="$(echo "$MSG" | formail -cx Subject | sed -e 's/Re: \?//g' -e > 's/^\s\+//')" > # get Date, and parse into a more regular, but still human-readable format > DATE="$(date -d "$(echo "$MSG" | formail -cx Date)" +%Y-%m-%d-%H:%M:%S)" > # send message to print with appropriate title and all passed enscript args > echo "$MSG" | enscript --title "$SUBJ $DATE" "$@"
Just a shell coding remark; I'd be doing this: #!/bin/sh : ${TMPDIR:=/tmp} tmpf=$TMPDIR/muttprint$$ cat >"$tmpf" subj=$(formail ...... <"$tmpf" | sed .....) date=$(formail ...... <"$tmpf" | sed .....) enscript --title "$SUBJ $DATE" "$@" <"$tmpf" xit=$? rm "$tmpf" exit $xit This is for a few reasons, but primarily because "echo" does not reproduce its arguments exactly (on several platforms it interprets various backslash sequences). So the 'echo "$MSG" |' can mangle the message for bother formail and enscript. The are other reasons like: a big message withh blow the command line argument limit (maybe not if echo is builtin, which is usually is), and using a temp file reduces the number of programs you spawn and the amount of data you copy, making for a faster script. And for reasons that require a somewhat wordy explaination, you should never use $UPPERCASE variable names for script-local/non-exprted variables. Cheers, -- Cameron Simpson <c...@zip.com.au> DoD#743 http://www.cskk.ezoshosting.com/cs/ From the April 1996 Dr. Dobb's Journal, p.18, DDJ: You've mentioned Edsgar Dijkstra. What do you think of his work? DK: His great strength is that he is uncompromising. It would make him physically ill to think of programming in C++.