]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
dbox: Maildir fallbacking code was returning wrong virtual file sizes.
authorTimo Sirainen <tss@iki.fi>
Fri, 19 Dec 2008 14:39:19 +0000 (16:39 +0200)
committerTimo Sirainen <tss@iki.fi>
Fri, 19 Dec 2008 14:39:19 +0000 (16:39 +0200)
--HG--
branch : HEAD

src/lib-storage/index/dbox/dbox-file-maildir.c

index b16fc54eb78eefa6d9de3f04cb87a40bce2a0f9e..d157d3ea46b21ab768a1144d85168b83f608579d 100644 (file)
@@ -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 @@ 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');