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

Reply via email to