Mercurial > dovecot > core-2.2
changeset 8581:a920044c8775 HEAD
dbox: Maildir fallbacking code was returning wrong virtual file sizes.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 19 Dec 2008 16:39:19 +0200 |
parents | 1efbbf9d0841 |
children | 467606dbabb7 |
files | src/lib-storage/index/dbox/dbox-file-maildir.c |
diffstat | 1 files changed, 10 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/index/dbox/dbox-file-maildir.c Fri Dec 19 16:24:19 2008 +0200 +++ b/src/lib-storage/index/dbox/dbox-file-maildir.c Fri Dec 19 16:39:19 2008 +0200 @@ -10,6 +10,8 @@ #include "dbox-file.h" #include "dbox-file-maildir.h" +#include <stdlib.h> + static const char * dbox_file_maildir_get_flags(struct dbox_file *file, enum dbox_metadata_key key) { @@ -97,12 +99,15 @@ value = dec2str(st.st_ctime); break; case DBOX_METADATA_VIRTUAL_SIZE: - if (maildir_filename_get_size(file->fname, - MAILDIR_EXTRA_VIRTUAL_SIZE, - &size)) - value = dec2str(size); - else + if (!maildir_filename_get_size(file->fname, + MAILDIR_EXTRA_VIRTUAL_SIZE, + &size)) { value = dbox_file_maildir_get_old_metadata(file, 'W'); + if (value == NULL) + break; + size = strtoull(value, NULL, 10); + } + value = t_strdup_printf("%llx", (unsigned long long)size); break; case DBOX_METADATA_POP3_UIDL: value = dbox_file_maildir_get_old_metadata(file, 'P');