Subject: Other bugs in draft 5 specification

From: Gregory Sereda <[email-masked]>
Date: Fri, 04 Dec 1998 14:27:18 -0500

At 12:27 PM 12/4/98 -0500, Tim wrote:
>I seem to have real trouble finding bugs in my examples.  If there are
>examples that still aren't valid, or are questionable, that you've
>noticed, please let me know so that I can fix them before I put out the
>next version.  I'll fix all the ones you've mentioned so far.

As I pointed out, I'm having a bit to trouble figuring out what is
valid sieve due to inconsitencies in draft 5.  However, I think
that I now have a good idea what the sieve spec is supposed to say.

Here are other bugs, based on my understanding:

2.4.2.1. String Lists

   For instance, the test `header ["To", "Cc"] contains
   ["[email-masked]", "[email-masked]"]' 

Bug: match keyword should be ":contains" and comes before header names.

4.1. Action reject

   Example:  if header "from" contains "[email-masked]" {
                reject "I am not taking mail from you, and I don't want
                your birdseed, either!";
             }

Bug: match keyword should be ":contains" and comes before header names.

4.7. Action discard

   Example:  if header ["from"] contains ["[email-masked]"]
             discard;

Bug: match keyword should be ":contains" and comes before header names.
     Also, discard must be block, enclosed by { ... }

5.5. Test header

   Syntax:   header <match-keyword> <header-name-list> <key-list>

   The "header" test evaluates to true if the any header name matches
   any key.  How the match is done is described by the second argument,
   which is one of the string comparison arguments discussed in section
   2.6.  The first argument to header, the header-name-list, is a list
   of headers to get values from to be searched.  The key-list is a list
   of keys.

Bug: description is wrong, match-keyword is tagged argument must
     preceed positional arguments.  Syntax does not show optional
     ":compartor" arguments.  Also, syntax does not show that
     <match-keyword> is optional tagged argument.

           header ["X-Caffeine"] is [""]         => false
           header ["X-Caffeine"] contains [""]   => true

Bug: match keyword should be ":contains" and comes before header names.
     match keyword should be ":is" and comes before header names.

5.7. Test size

   Syntax:   size <":over" / ":under"> <limit [quantifier]>

   The "size" test deals with the size of a message.  It takes either a
   tagged argument of ":over" or ":under", followed by a number
   representing the size of the message.

Question: is there a default if neither ":over" or ":under" tagged
   arguments are specified, as in the <match-keyword> case?
   My guess is no, there is no default. Actually, I'm not sure
   why we have a default in the <match-keyword> case, ie ":is"

Greg Sereda