"David W. Tamkin" <dattier(_at_)ripco(_dot_)com> writes:
I asked,
| >Now, here's my question: is the following equivalent?
| ...
| > :0Ewc:local.lock
| > * cond3
| > * cond4
| > * cond5
| > | pipe1
| > :0Aec # needs no local lock
| > | pipe2
| >
| >Also, what if I leave off the `A'?
Philip has responded,
| Those should be equivalent. Using 'A' and 'e' together is perfectly
| legal. The match/no-match status of the ':0Ewc' recipe will be used
| directly by the 'A' flag, regardless of whether that recipe didn't match
| because of its 'E' flag or because of a failed condition.
OK, thank you, but what about my second question: does it also come out the
same if I leave off the `A,' or would mail for which cond1 or cond2 was met,
or neither cond1 nor cond2 nor (cond3&cond4&cond5), send a copy to pipe2 if
its own previously attempted recipe's action had failed?
Hmm, yes. As the procmailrc(5) manpage indicates, the 'e' flag looks at
the immeadiately preceeding recipe and will only execute if it matched,
but failed on execution. So removing the 'A' flag will not change the
condition under which that particular recipe will match.
(Whether or not _this_ recipe has the 'A' flag could affect the _next_
recipe, if it has the 'A' or 'a' flag, as that'll change which recipe
the next one's 'A' or 'a' flag will look backwards towards.)
I guess I'm asking in part, how far back can `e' (if not tempered by `A')
refer, or what does `e' do if the immediately preceding recipe on its
nesting level not attempted?
'e' always looks to the immeadiately preceeding recipe at the current
nesting level, as compared to 'A' and 'a' which look back to the last
recipe at the current nesting level which does not itself have an 'A'
or 'a' flag. If its immeadiately preceeding recipe was not attempted,
then a recipe with the 'e' flag will not be attempted either.
Philip Guenther
_______________________________________________
procmail mailing list
procmail(_at_)lists(_dot_)RWTH-Aachen(_dot_)DE
http://MailMan.RWTH-Aachen.DE/mailman/listinfo/procmail