Forráskód Böngészése

fix exclusion of bogus "INBOX.*" folders in Maildir++

this also adds code which avoids that the message about excluding the
mailbox is printed multiple times - this could happen with Maildir++, as
the hierarchy is flattened.

amends 0f24ca31b.
Oswald Buddenhagen 8 éve
szülő
commit
9eaa97923a
1 módosított fájl, 7 hozzáadás és 3 törlés
  1. 7 3
      src/drv_maildir.c

+ 7 - 3
src/drv_maildir.c

@@ -303,6 +303,7 @@ maildir_list_recurse( store_t *gctx, int isBox, int flags,
 	DIR *dir;
 	int style = ((maildir_store_conf_t *)gctx->conf)->sub_style;
 	int pl, nl, i;
+	int warned = 0;
 	struct dirent *de;
 	struct stat st;
 
@@ -370,9 +371,12 @@ maildir_list_recurse( store_t *gctx, int isBox, int flags,
 						name[i] = '/';
 				}
 			}
-			if (nameLen == nameOff && equals( effName, nl - nameOff, "INBOX", 5 ) && (!effName[5] || effName[5] == '/')) {
-				path[pathLen] = 0;
-				warn( "Maildir warning: ignoring INBOX in %s\n", path );
+			if (nameLen == nameOff && starts_with( effName, nl - nameOff, "INBOX", 5 ) && (!effName[5] || effName[5] == '/')) {
+				if (!warned) {
+					warned = 1;
+					path[pathLen] = 0;
+					warn( "Maildir warning: ignoring INBOX in %s\n", path );
+				}
 				continue;
 			}
 			path[pl++] = '/';