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');