From c4b51b5c8df236d272987820e801db20bd78d398 Mon Sep 17 00:00:00 2001
From: Guillem Jover <guillem@hadrons.org>
Date: Sun, 6 Sep 2015 21:47:57 +0200
Subject: [PATCH 1/2] XXX: Add more verbosity

---
 src/drv_maildir.c |  3 +++
 src/main.c        | 26 +++++++++++++++++++++++++-
 src/sync.c        |  2 +-
 3 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/src/drv_maildir.c b/src/drv_maildir.c
index a91b7cc..74fdd81 100644
--- a/src/drv_maildir.c
+++ b/src/drv_maildir.c
@@ -125,6 +125,8 @@ maildir_join_path( maildir_store_conf_t *conf, const char *prefix, const char *b
 	int pl, bl, n, sub = 0;
 	char c;
 
+	info(" maildir join source = '%s'\n", box);
+
 	pl = strlen( prefix );
 	for (bl = 0, n = 0; (c = box[bl]); bl++)
 		if (c == '/') {
@@ -165,6 +167,7 @@ maildir_join_path( maildir_store_conf_t *conf, const char *prefix, const char *b
 		}
 	}
 	*p = 0;
+	info(" maildir join dest = '%s'\n", out);
 	return out;
 }
 
diff --git a/src/main.c b/src/main.c
index c8c3bf2..03c2bad 100644
--- a/src/main.c
+++ b/src/main.c
@@ -215,6 +215,13 @@ cmp_box_names( const void *a, const void *b )
 	return strcmp( as, bs );
 }
 
+static void
+print_boxes_list(string_list_t *boxes, int box)
+{
+	for (; boxes; boxes = boxes->next)
+		info("  box[%d] name = %s\n", box, boxes->string);
+}
+
 static char **
 filter_boxes( string_list_t *boxes, const char *prefix, string_list_t *patterns )
 {
@@ -225,8 +232,10 @@ filter_boxes( string_list_t *boxes, const char *prefix, string_list_t *patterns
 
 	pfxl = prefix ? strlen( prefix ) : 0;
 	for (; boxes; boxes = boxes->next) {
-		if (!starts_with( boxes->string, -1, prefix, pfxl ))
+		if (!starts_with( boxes->string, -1, prefix, pfxl )) {
+			info("  skipping prefix: %s\n", boxes->string);
 			continue;
+		}
 		fnot = 1;
 		for (cpat = patterns; cpat; cpat = cpat->next) {
 			ps = cpat->string;
@@ -240,6 +249,8 @@ filter_boxes( string_list_t *boxes, const char *prefix, string_list_t *patterns
 				break;
 			}
 		}
+		if (fnot)
+			info("  ignoring pattern: %s\n", boxes->string);
 		if (!fnot) {
 			if (num + 1 >= rnum)
 				boxarr = nfrealloc( boxarr, (rnum = (rnum + 10) * 2) * sizeof(*boxarr) );
@@ -817,6 +828,15 @@ sync_chans( main_vars_t *mvars, int ent )
 			mvars->chanptr->boxlist = 2;
 			boxes[M] = filter_boxes( mvars->ctx[M]->boxes, mvars->chan->boxes[M], mvars->chan->patterns );
 			boxes[S] = filter_boxes( mvars->ctx[S]->boxes, mvars->chan->boxes[S], mvars->chan->patterns );
+
+			print_boxes_list(mvars->ctx[M]->boxes, M);
+			print_boxes_list(mvars->ctx[S]->boxes, S);
+
+			for (mb = 0; boxes[M][mb]; mb++)
+				info(" box: M=%s\n", boxes[M][mb]);
+			for (sb = 0; boxes[S][sb]; sb++)
+				info(" box: S=%s\n", boxes[S][sb]);
+
 			mboxapp = &mvars->chanptr->boxes;
 			for (mb = sb = 0; ; ) {
 				char *mname = boxes[M] ? boxes[M][mb] : 0;
@@ -824,18 +844,22 @@ sync_chans( main_vars_t *mvars, int ent )
 				if (!mname && !sname)
 					break;
 				mbox = nfmalloc( sizeof(*mbox) );
+				info(" check boxes m=%s s=%s\n", mname, sname);
 				if (!(cmp = !mname - !sname) && !(cmp = cmp_box_names( &mname, &sname ))) {
+					info(" check both present\n");
 					mbox->name = mname;
 					free( sname );
 					mbox->present[M] = mbox->present[S] = BOX_PRESENT;
 					mb++;
 					sb++;
 				} else if (cmp < 0) {
+					info(" check master present\n");
 					mbox->name = mname;
 					mbox->present[M] = BOX_PRESENT;
 					mbox->present[S] = (!mb && !strcmp( mbox->name, "INBOX" )) ? BOX_PRESENT : BOX_ABSENT;
 					mb++;
 				} else {
+					info(" check slave present\n");
 					mbox->name = sname;
 					mbox->present[M] = (!sb && !strcmp( mbox->name, "INBOX" )) ? BOX_PRESENT : BOX_ABSENT;
 					mbox->present[S] = BOX_PRESENT;
diff --git a/src/sync.c b/src/sync.c
index 9672734..cb2669e 100644
--- a/src/sync.c
+++ b/src/sync.c
@@ -1057,7 +1057,7 @@ box_confirmed2( sync_vars_t *svars, int t )
 			}
 			if (svars->existing) {
 				if (!(svars->chan->ops[1-t] & OP_REMOVE)) {
-					error( "Error: channel %s: %s %s cannot be opened.\n",
+					error( "Error: channel %s: %s %s cannot be opened (removed).\n",
 					       svars->chan->name, str_ms[t], svars->orig_name[t] );
 					goto bail;
 				}
-- 
2.5.1

