[prev in list] [next in list] [prev in thread] [next in thread]
List: cyrus-devel
Subject: index.c API (was: Re: Looking for testing volunteers)
From: Bron Gondwana <brong () fastmail ! fm>
Date: 2007-10-31 3:21:13
Message-ID: 20071031032113.GA9455 () brong ! net
[Download RAW message or body]
On Fri, Oct 26, 2007 at 04:33:16PM -0400, Ken Murchison wrote:
> Folks,
>
> I just make some changes to two vitally important Cyrus source files, that
> I'd like to get some independent testing on. I banged on both sets of
> changes myself, but the community can usually find bugs that my testing
> didn't reveal. The changes are mutually exclusive, so they can be tested
> independently. All diffs are against 2.3.10.
>
> The first change was to lib/cyrusdb_skiplist.c to squash all of the
> signed/unsigned warnings.
>
> https://bugzilla.andrew.cmu.edu/cgi-bin/cvsweb.cgi/src/cyrus/lib/cyrusdb_skiplist.c.diff?r1=1.52;r2=1.53
>
>
> The second change was to imap/index.c. There are 3 major changes. First, I
> removed redundant code in index_parse_sequence(). Second, I refactored
> index_forsequence() to use index_parse_sequence(). Third, I squashed all
> signed/unsigned warnings. There are some collateral changes in other
> files, but no change in functionality to them.
>
> https://bugzilla.andrew.cmu.edu/cgi-bin/cvsweb.cgi/src/cyrus/imap/index.c.diff?r1=1.232;r2=1.237
> https://bugzilla.andrew.cmu.edu/cgi-bin/cvsweb.cgi/src/cyrus/imap/index.h.diff?r1=1.14;r2=1.15
> https://bugzilla.andrew.cmu.edu/cgi-bin/cvsweb.cgi/src/cyrus/imap/imapd.c.diff?r1=1.532;r2=1.533
> https://bugzilla.andrew.cmu.edu/cgi-bin/cvsweb.cgi/src/cyrus/imap/imapd.h.diff?r1=1.66;r2=1.67
>
Sorry to take so long to get back on you with these. I've imported them
both into my quilt repository and am going to go ahead with testing
them.
I also have a bunch of questions for the other stuff I'm doing - first
is the "index.h/index.c API". It looks like all the functions in there
are designed to be used with the following basic pattern:
index_operatemailbox(&mailbox);
index_getuid(msgno);
etc.
However there are functions like this:
extern char *index_get_msgid(struct mailbox *mailbox, unsigned msgno);
Which take a mailbox (unused), or even more funky:
extern char *index_getheader(struct mailbox *mailbox, unsigned msgno,
char *hdr)
Which takes a mailbox struct and even uses it in some places, yet at
the same time uses the global cache_base rather than the one in the
mailbox object, meaning it absolutely requires the same mailbox
be passed anyway.
Is there a good reason behind all this? Can I talk you into making
these functions "re-entrant" by always requiring a mailbox be passed,
and hence not storing anything global, or alternatively storing the
entire mailbox struct globally and referring to that so it never
needs to be passed?
Bron.
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic