From: Timo Sirainen Date: Fri, 19 Dec 2008 14:39:19 +0000 (+0200) Subject: dbox: Maildir fallbacking code was returning wrong virtual file sizes. X-Git-Tag: 1.2.beta1~162 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=493aa9631b423474aa4ff714166847ebb934e59a;p=thirdparty%2Fdovecot%2Fcore.git dbox: Maildir fallbacking code was returning wrong virtual file sizes. --HG-- branch : HEAD --- diff --git a/src/lib-storage/index/dbox/dbox-file-maildir.c b/src/lib-storage/index/dbox/dbox-file-maildir.c index b16fc54eb7..d157d3ea46 100644 --- a/src/lib-storage/index/dbox/dbox-file-maildir.c +++ b/src/lib-storage/index/dbox/dbox-file-maildir.c @@ -10,6 +10,8 @@ #include "dbox-file.h" #include "dbox-file-maildir.h" +#include + static const char * dbox_file_maildir_get_flags(struct dbox_file *file, enum dbox_metadata_key key) { @@ -97,12 +99,15 @@ const char *dbox_file_maildir_metadata_get(struct dbox_file *file, 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');