mbexamine and block size cache files

John Capo jc at irbs.com
Wed Aug 20 18:25:36 EDT 2008


Quoting Wesley Craig (wes at umich.edu):
> On 20 Aug 2008, at 09:56, John Capo wrote:
> >That does work on FreeBSD 6.3.
> 
> If many entreis are not NULL terminated, perhaps all of the string  
> formats should be %.*s with a specified length, then.  Are you  
> willing to submit a tested patch?

Tested patch attached.

John Capo
Tuffmail.com

-------------- next part --------------
--- ../../cyrus-imapd-2.3.12/imap/mbexamine.c	2008-04-21 16:58:34.000000000 -0400
+++ mbexamine.c	2008-08-20 16:36:09.000000000 -0400
@@ -365,13 +365,13 @@
 
 	cacheitem = mailbox.cache_base + CACHE_OFFSET(i);
 	
-	printf(" Envel>{%d}%s\n", CACHE_ITEM_LEN(cacheitem),
+	printf(" Envel>{%d}%.*s\n", CACHE_ITEM_LEN(cacheitem), CACHE_ITEM_LEN(cacheitem),
 	       cacheitem + CACHE_ITEM_SIZE_SKIP);
 	cacheitem = CACHE_ITEM_NEXT(cacheitem);
-	printf("BdyStr>{%d}%s\n", CACHE_ITEM_LEN(cacheitem),
+	printf("BdyStr>{%d}%.*s\n", CACHE_ITEM_LEN(cacheitem), CACHE_ITEM_LEN(cacheitem),
 	       cacheitem + CACHE_ITEM_SIZE_SKIP);
 	cacheitem = CACHE_ITEM_NEXT(cacheitem);
-	printf("  Body>{%d}%s\n", CACHE_ITEM_LEN(cacheitem),
+	printf("  Body>{%d}%.*s\n", CACHE_ITEM_LEN(cacheitem), CACHE_ITEM_LEN(cacheitem),
 	       cacheitem + CACHE_ITEM_SIZE_SKIP);
 	cacheitem = CACHE_ITEM_NEXT(cacheitem);
 
@@ -381,22 +381,22 @@
 #endif
 
 	cacheitem = CACHE_ITEM_NEXT(cacheitem);
-	printf("CacHdr>{%d}%s\n", CACHE_ITEM_LEN(cacheitem),
+	printf("CacHdr>{%d}%.*s\n", CACHE_ITEM_LEN(cacheitem), CACHE_ITEM_LEN(cacheitem),
 	       cacheitem + CACHE_ITEM_SIZE_SKIP);
 	cacheitem = CACHE_ITEM_NEXT(cacheitem);
-	printf("  From>{%d}%s\n", CACHE_ITEM_LEN(cacheitem),
+	printf("  From>{%d}%.*s\n", CACHE_ITEM_LEN(cacheitem), CACHE_ITEM_LEN(cacheitem),
 	       cacheitem + CACHE_ITEM_SIZE_SKIP);
 	cacheitem = CACHE_ITEM_NEXT(cacheitem);
-	printf("    To>{%d}%s\n", CACHE_ITEM_LEN(cacheitem),
+	printf("    To>{%d}%.*s\n", CACHE_ITEM_LEN(cacheitem), CACHE_ITEM_LEN(cacheitem),
 	       cacheitem + CACHE_ITEM_SIZE_SKIP);
 	cacheitem = CACHE_ITEM_NEXT(cacheitem);
-	printf("    Cc>{%d}%s\n", CACHE_ITEM_LEN(cacheitem),
+	printf("    Cc>{%d}%.*s\n", CACHE_ITEM_LEN(cacheitem), CACHE_ITEM_LEN(cacheitem),
 	       cacheitem + CACHE_ITEM_SIZE_SKIP);
 	cacheitem = CACHE_ITEM_NEXT(cacheitem);
-	printf("   Bcc>{%d}%s\n", CACHE_ITEM_LEN(cacheitem),
+	printf("   Bcc>{%d}%.*s\n", CACHE_ITEM_LEN(cacheitem), CACHE_ITEM_LEN(cacheitem),
 	       cacheitem + CACHE_ITEM_SIZE_SKIP);
 	cacheitem = CACHE_ITEM_NEXT(cacheitem);
-	printf("Subjct>{%d}%s\n", CACHE_ITEM_LEN(cacheitem),
+	printf("Subjct>{%d}%.*s\n", CACHE_ITEM_LEN(cacheitem), CACHE_ITEM_LEN(cacheitem),
 	       cacheitem + CACHE_ITEM_SIZE_SKIP);
 
 	if(flag) break;


More information about the Cyrus-devel mailing list