Review Request: backports to support imap4flags in cyrus-imapd-2.4

Ken Murchison murch at andrew.cmu.edu
Fri Oct 31 14:53:52 EDT 2014


I think backporting strarray is just fine.  In fact, I may have already 
done so for caldav-2.4.  I know I backported a bunch of struct buf API 
additions.


On 10/31/2014 02:51 PM, James Cassell wrote:
> Hello,
>
> I've backported six strarray_t patches to cyrus-imapd-2.4.17 to support
> the sieve imap4flags extension.  Are these patches a reasonable backport
> to 2.4?
>
> I started the imap4flags extension on 2.4, but rebased it onto master
> and completed the work there.  I have since backported it to 2.4, but it
> relied on the strarray_t in several places.  Is it better to have these
> strarray_t patches backported, or should I do the backport so that it
> won't require these extra patches.  The latter will require more work.
> The former is already complete.
>
> I'm mostly concerned about the strarray_t patches I've backported, but
> if there any comments on the imap4flags code itself, I'm all ears.
>
> Thanks.
>
> V/r,
> James Cassell
>
>
>
> The following changes since commit
> d1df8aff4ab1b916a7794b39ca4be8e72b1548af:
>
>    Bump version for cyrus-imapd to 2.4.17 (2012-12-01 19:57:54 +0000)
>
> are available in the git repository at:
>
>    git://git.cyrusimap.org/git/cyrus-imapd
>    dev/cassell/for-review-imap4flags-2.4
>
> for you to fetch changes up to a67c68d95d09aa7006eab1e2fa5b1cfbebbc0274:
>
>    [sieve] bump bytecode version for imap4flags extension (2014-10-31
>    14:14:37 -0400)
>
> ----------------------------------------------------------------
> Bron Gondwana (1):
>        strarray: add flags support to _split*
>
> Greg Banks (6):
>        use strarray_t for appendstage.flags[]
>        Fix compile b0rkage in nntpd.c
>        Use strarray_t in cmd_store() index_store()
>        Replace struct boundary with strarray_t
>        Replace struct sieve_imapflags_t with strarray_t
>        Replace stringlist_t with strarray_t.
>
> James Cassell (40):
>        [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] sieve.y: remove bytecode dependence on sieve.y
>        [sieve] add legacy test cases for hasflag test
>        [sieve] bump bytecode version for imap4flags extension
>
>   doc/specs.html                                     |   2 +
>   imap/append.c                                      |  17 +-
>   imap/append.h                                      |   3 +-
>   imap/global.c                                      |   2 +-
>   imap/imapd.c                                       |  53 +---
>   imap/index.c                                       |   8 +-
>   imap/index.h                                       |   3 +-
>   imap/lmtp_sieve.c                                  |  12 +-
>   imap/lmtpd.c                                       |  17 +-
>   imap/lmtpd.h                                       |   6 +-
>   imap/message.c                                     |  62 ++---
>   imap/nntpd.c                                       |   2 +-
>   lib/imapoptions                                    |   2 +-
>   lib/strarray.c                                     |  23 +-
>   lib/strarray.h                                     |   7 +-
>   sieve/Makefile.in                                  |   2 +-
>   sieve/README                                       |   3 +
>   sieve/bc_dump.c                                    |  33 ++-
>   sieve/bc_emit.c                                    |  60 ++++-
>   sieve/bc_eval.c                                    | 212
>   +++++++++++++--
>   sieve/bc_generate.c                                |  58 +++--
>   sieve/bytecode.h                                   |  63 ++++-
>   sieve/flags.c                                      |  59 +++++
>   sieve/flags.h                                      |  15 ++
>   sieve/interp.c                                     |  14 +-
>   sieve/interp.h                                     |   2 +-
>   sieve/message.c                                    |  78 ++++--
>   sieve/message.h                                    |   8 +-
>   sieve/script.c                                     | 115 +++------
>   sieve/script.h                                     |   1 +
>   sieve/sieve-lex.l                                  |   2 +
>   sieve/sieve.y                                      | 285
>   ++++++++++++++-------
>   sieve/sieve_interface.h                            |  14 +-
>   sieve/sieved.c                                     |  40 ++-
>   sieve/test.c                                       |  28 +-
>   .../actionExtensions/serverm/ueamail-imap4flags    |  11 +
>   .../actionExtensions/testm/ueatest-imap4flags      |   6 +
>   .../actionExtensions/uberExtensionActionScript.key |  12 +
>   .../actionExtensions/uberExtensionActionScript.s   |  21 +-
>   sieve/tests/testExtension/serverm/uetmail-hasflag  |  11 +
>   sieve/tests/testExtension/testm/uetest-hasflag     |   7 +
>   .../testExtension/uberExtensionTestScript.key      |  14 +
>   .../tests/testExtension/uberExtensionTestScript.s  |  92 ++++++-
>   sieve/tree.c                                       |  62 ++---
>   sieve/tree.h                                       |  39 ++-
>   sieve/varlist.c                                    |  79 ++++++
>   sieve/varlist.h                                    |  32 +++
>   47 files changed, 1205 insertions(+), 492 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


-- 
Kenneth Murchison
Principal Systems Software Engineer
Carnegie Mellon University



More information about the Cyrus-devel mailing list