Mercurial > dovecot > original-hg > dovecot-1.2
diff src/lib-storage/index/maildir/maildir-sync.c @ 5588:6c89106dee21 HEAD
Keyword characters weren't sorted in the maildir filename.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 11 May 2007 16:14:10 +0300 |
parents | 1c4fd25893bd |
children | 453128e12b11 |
line wrap: on
line diff
--- a/src/lib-storage/index/maildir/maildir-sync.c Fri May 11 15:29:58 2007 +0300 +++ b/src/lib-storage/index/maildir/maildir-sync.c Fri May 11 16:14:10 2007 +0300 @@ -183,6 +183,7 @@ #include <stdio.h> #include <stddef.h> +#include <stdlib.h> #include <unistd.h> #include <dirent.h> #include <sys/stat.h> @@ -296,13 +297,20 @@ return 1; } +static int char_cmp(const void *p1, const void *p2) +{ + const unsigned char *c1 = p1, *c2 = p2; + + return *c1 - *c2; +} + static void maildir_filename_append_keywords(struct maildir_keywords_sync_ctx *ctx, ARRAY_TYPE(keyword_indexes) *keywords, string_t *str) { const unsigned int *indexes; - unsigned int i, count; + unsigned int i, count, start = str_len(str); char chr; indexes = array_get(keywords, &count); @@ -311,6 +319,8 @@ if (chr != '\0') str_append_c(str, chr); } + + qsort(str_c_modifiable(str) + start, str_len(str) - start, 1, char_cmp); } const char *maildir_filename_set_flags(struct maildir_keywords_sync_ctx *ctx,