Aaron Stone wrote:
> On Sat, 2006-07-22 at 18:18 +0200, Paul J Stevens wrote:
>
>> trying to build against 2.1.10 fails at this moment.
>>
>> Afaict, the only disparity between sieve-2.1.10 and 2.1.11 is the
>> SIEVE2_MESSAGE_GETSUBADDRESS, so if I comment out that line in the
>> callback setup all should work as expected right?
>
> I have libSieve 2.1.12 uploaded now. The GETSUBADDRESS callback is going
> to be part of the stable libSieve 2.2 API, so backwards compatibility
> isn't something that I was looking at here.
>
> I've also got a small patch to add g_strcasestr to misc.c; there's no
> portable implementation of strcasestr anyplace, needed for the imap
> flags support (which works, I really did test it a lot). Try this:
Maybe I'm dense, but shouldn't we use g_ascii_strncasecmp instead of
g_ascii_strcasecmp??
>
> require ["fileinto", "imap4flags"];
>
> fileinto :flags "\urgent" "INBOX/Bar/Baz/Qux/Jazz/Shoop.box";
>
> Aaron
>
>
> ------------------------------------------------------------------------
>
> Index: misc.h
> ===================================================================
> --- misc.h (revision 2203)
> +++ misc.h (working copy)
> @@ -105,6 +105,7 @@
> GString * g_list_join(GList * list, const gchar * sep);
> GList * g_string_split(GString * string, const gchar * sep);
> GList * g_list_append_printf(GList * list, char * format, ...);
> +char * g_strcasestr(const char *haystack, const char *needle);
>
> gint ucmp(const u64_t *a, const u64_t *b);
> void g_list_destroy(GList *list);
check.
> Index: modules/sortsieve.c
> ===================================================================
> --- modules/sortsieve.c (revision 2204)
> +++ modules/sortsieve.c (working copy)
> @@ -205,8 +205,7 @@
>
> for (i = 0; flags[i]; i++) { // Loop through all
> script/user-specified flags.
> for (j = 0; imap_flag_desc[j]; i++) { // Find the ones
> we support.
> - // FIXME: We should be ASCII-case-insensitive.
> - if (g_strstr(imap_flag_desc[j], flags[i])) {
> + if (g_strcasestr(imap_flag_desc[j], flags[i])) {
> msgflags[i] = 1;
> }
> }
check.
> Index: db.h
> ===================================================================
> --- db.h (revision 2204)
> +++ db.h (working copy)
> @@ -1005,7 +1005,7 @@
> * - -1 on error
> */
> int db_imap_split_mailbox(const char *mailbox, u64_t owner_idnr,
> - GList ** mailboxes, const char ** errmsg)
> + GList ** mailboxes, const char ** errmsg);
>
> /**
> * \brief set permission on a mailbox (readonly/readwrite)
got that one covered already.
> Index: misc.c
> ===================================================================
> --- misc.c (revision 2203)
> +++ misc.c (working copy)
> @@ -422,6 +422,17 @@
> return g_list_append(list, g_strdup_vprintf(format, argp));
> }
>
> +char * g_strcasestr(const char *haystack, const char *needle)
> +{
> + // Like strstr, but case insensitive.
> + for (; *haystack; haystack++) {
> + if (g_ascii_strcasecmp(haystack, needle) == 0)
> + return (char *)haystack;
> + }
> +
> + return NULL;
> +}
> +
So I believe that should be:
> char * g_strcasestr(const char *haystack, const char *needle)
> {
> // Like strstr, but case insensitive.
> size_t n = strlen(needle);
> for (; *haystack; haystack++) {
> if (g_ascii_strncasecmp(haystack, needle, n) == 0)
> return (char *)haystack;
> }
>
> return NULL;
> }
--
________________________________________________________________
Paul Stevens paul at nfg.nl
NET FACILITIES GROUP GPG/PGP: 1024D/11F8CD31
The Netherlands________________________________http://www.nfg.nl