procmail
[Top] [All Lists]

Re: Interpreting the 'w' flag

2004-05-16 01:04:52
At 21:48 2004-05-15 -0500, Skip Montanaro wrote:
I'm being a bit dense today.  Is this interpretation correct?

    "Filter is unsuccessful" means the exit status of the filter was
    non-zero and so procmail treats the message as having not been
    delivered.

Correct.

For example, I have this recipe:

    :0 W: cksum.lock
    | pycksum -v $HOME/tmp/spam.cache

FTR, you cited the manpage description of 'w' (lowercase), but you're using 'W' (uppercase) in the recipe you're asking about - while the two are essentially the same, differing only in that 'W' (uppercase) suppresses the program failure message which would appear in the log, I think it's worth noting anyway. Flags are case sensitive.

If pycksum exits with a 0 status procmail will consider the message
delivered, right?

Well, yes and no.

If the program doesn't read the whole message provided to it on STDIN, and depending upon the size of the message (whether it fits within the buffer size used by the file manupulation functions), procmail may flag an error because it interprets that condition as the message having not been completely processed. To avoid this, add an 'i' flag to the flag line. This is most notable on external processes which terminate processing early because some condition is matched - say as soon as they match a keyword string, rather than processing the whole file (I presume from the name of the program you're using, it's probably a checksum program, and therfore it should probably be reading the WHOLE file, so wouldn't normally run afoul of this condition).

---
 Sean B. Straw / Professional Software Engineering

 Procmail disclaimer: <http://www.professional.org/procmail/disclaimer.html>
 Please DO NOT carbon me on list replies.  I'll get my copy from the list.


_______________________________________________
procmail mailing list
procmail(_at_)lists(_dot_)RWTH-Aachen(_dot_)DE
http://MailMan.RWTH-Aachen.DE/mailman/listinfo/procmail

<Prev in Thread] Current Thread [Next in Thread>