Sieve imap4flags extension

James Cassell fedoraproject at cyberpear.com
Tue Oct 14 04:18:35 EDT 2014


Hello,

This is not a pull request.

I have finished implementing the imap4flags extension.  I have taken
into account much feedback from Dilyan.  I would appreciate any further
feedback on my code.

One outstanding issue that I know of is that the Date Extension probably
doesn't need backwards compatibility without the index extension since
they were implemented about a month apart.  I will fix this in the
bytecode.

The other issue is that the bytecode version number needs to be
incremented, first for the Date and Index Extensions, then again for the
imap4flags extension (or once to cover them both).

Thanks.

V/r,
James Cassell


The following changes since commit
d8beae4e3a9490b0435caee22ddae313b8f4b17b:

  [mboxevent] Add an extra, optional parameter vnd.cmu.sessionId to
  event notifications (2014-10-07 10:03:40 +0200)

are available in the git repository at:

  https://github.com/cyberpear/cyrus-imapd/commits/for-review-imap4flags-rev1

for you to fetch changes up to 6a0c0cc11a531422b9c3a7dbef31d6338f17610d:

  [sieve] Date and Index Extensions: return false instead of SIEVE_FAIL
  (2014-10-14 03:34:38 -0400)

----------------------------------------------------------------
Guillermo A. Amaral (1):
      Index Extension - Fix backward compatibility

James Cassell (44):
      [cunit] cunit.pl: fix init of CU_SuiteInfo type for CUnit 2.1-3
      [cunit] cunit.pl: wrap config.h include
      Merge branches 'CUnit_2.1-3' and 'date-extension'
      [sieve] add imap4flags reference
      [sieve] add parser support for imap4flags
      [sieve] add imap4flags awareness to sieve interpreter
      [sieve] update bytecode to support imap4flags
      [sieve] imap4flags support for bytecode generator
      [sieve] imap4flags support for bytecode emitter
      [sieve] imap4flags support for bytecode decompiler
      [sieve] bc_emit.c: fix comment
      [sieve] only 'fileinto' once per folder (RFC 3028)
      [sieve] fileinto: ensure last flag list value wins (RFC 5232)
      [sieve] keep: ensure last flag list value wins (RFC 5232)
      [sieve] bc_generate,bc_emit: put new parameter first
      [sieve] message.c: add :copy support to keep action
      [sieve] make sieve_{add,remove}flag() functions case insensitive
      [sieve] bc_eval.c: support for :flags parameter on KEEP and
      FILEINTO
      [sieve] bc_emit.c: add comments for B_FILEINTO
      [sieve] add legacy test cases for :flags argument to fileinto and
      keep
      [sieve] bc_eval: track current value of internal flags variable
      [sieve] bc_eval.c: support for imap4flags hasflag test
      [sieve] update sieve_fileinto() and sieve_keep() to use :flags
      parameter
      [sieve] sieve.y: verify :flags parameter is a valid list of flags
      [sieve] sieve.y: free_ftags(): free flags stringlist
      [sieve] sieve.y: support for space-separated flags within a string
      [sieve] tree.c: free flags stringlists in free_tree() and
      free_test()
      [sieve] sieve.y: 'require' imap4flags for hasflag test and :flags
      arg
      [sieve] Anticipate bytecode changes for VARIABLES extension
      [sieve] bc_dump.c: support imap4flags keep, fileinto, hasflag
      [sieve] sieved: update bytecode decompiler for imap4flags
      [sieve] added varlist.{c,h} in anticipation of the variables
      extension
      [sieve] remove dependence on actionflags parameter
      [sieve] bc_eval.c: add :count match-type support to hasflag test
      [sieve] move verify_flaglist() to flags.c for reuse elsewhere
      [sieve] sieve.y: an invalid flag should not cause a parsing error
      [sieve] properly handle NULL flag lists
      Revert "[sieve] update sieve_fileinto() and sieve_keep() to use
      :flags parameter"
      [sieve] complete removal of no-longer-used actionflags parameter
      [sieve] remove superfluous sieve_addflag() and _removeflag()
      functions
      [sieve] bytecode: don't emit unused :index parameter for hasflag
      test
      [sieve] sieve.y: remove bytecode dependence on sieve.y
      [sieve] add legacy test cases for hasflag test
      [sieve] Date and Index Extensions: return false instead of
      SIEVE_FAIL

 Makefile.am                                        |   6 +-
 configure.ac                                       |   4 +
 cunit/cunit.pl                                     |  13 +
 doc/specs.html                                     |   2 +
 lib/imapoptions                                    |   2 +-
 sieve/README                                       |   3 +
 sieve/bc_dump.c                                    |  33 ++-
 sieve/bc_emit.c                                    |  62 ++++-
 sieve/bc_eval.c                                    | 291
 +++++++++++++++++----
 sieve/bc_generate.c                                |  44 +++-
 sieve/bytecode.h                                   |  24 +-
 sieve/flags.c                                      |  59 +++++
 sieve/flags.h                                      |  16 ++
 sieve/interp.c                                     |   2 +
 sieve/message.c                                    |  76 ++++--
 sieve/message.h                                    |   4 +-
 sieve/script.c                                     |  68 ++---
 sieve/script.h                                     |   1 +
 sieve/sieve-lex.l                                  |   2 +
 sieve/sieve.y                                      | 192 ++++++++++----
 sieve/sieve_interface.h                            |   1 +
 sieve/sieved.c                                     |  61 ++++-
 .../actionExtensions/serverm/ueamail-imap4flags    |  11 +
 .../actionExtensions/testm/ueatest-imap4flags      |   6 +
 .../actionExtensions/uberExtensionActionScript.key |  12 +
 .../actionExtensions/uberExtensionActionScript.s   |  22 +-
 sieve/tests/testExtension/serverm/uetmail-hasflag  |  11 +
 sieve/tests/testExtension/testm/uetest-hasflag     |   7 +
 .../testExtension/uberExtensionTestScript.key      |  14 +
 .../tests/testExtension/uberExtensionTestScript.s  |  91 ++++++-
 sieve/tree.c                                       |   5 +
 sieve/tree.h                                       |   8 +-
 sieve/varlist.c                                    |  79 ++++++
 sieve/varlist.h                                    |  32 +++
 34 files changed, 1049 insertions(+), 215 deletions(-)
 create mode 100644 sieve/flags.c
 create mode 100644 sieve/flags.h
 create mode 100644
 sieve/tests/actionExtensions/serverm/ueamail-imap4flags
 create mode 100644
 sieve/tests/actionExtensions/testm/ueatest-imap4flags
 create mode 100644 sieve/tests/testExtension/serverm/uetmail-hasflag
 create mode 100644 sieve/tests/testExtension/testm/uetest-hasflag
 create mode 100644 sieve/varlist.c
 create mode 100644 sieve/varlist.h


More information about the Cyrus-devel mailing list