From d7d5fd20bc81db0aff711a540a2186a4f93b21e8 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Sat, 12 Apr 2014 16:56:00 +0200 Subject: [PATCH] fix "inverse copy&pasto" in account labeling code the code was copied and the original adjusted ... but not quite completely. this means that clashing server names never really worked since - not that i would have expected this to be a particularly common configuration to start with. :D also added comments explaining why there are two implementations of the same thing. amends aea4be19e3 (anno 2006). found by coverity. --- src/compat/config.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/compat/config.c b/src/compat/config.c index 39bbbe9..70360fc 100644 --- a/src/compat/config.c +++ b/src/compat/config.c @@ -247,6 +247,8 @@ write_imap_server( FILE *fp, config_t *cfg ) char buf[128], ubuf[64]; static int tunnels; + /* The old server names determine the derived store names. They are kinda stupid, + * but can't be changed, because store names are encoded in state file names. */ if (cfg->tunnel) nfasprintf( (char **)&cfg->old_server_name, "tunnel%d", ++tunnels ); else { @@ -266,7 +268,7 @@ write_imap_server( FILE *fp, config_t *cfg ) } if (boxes) /* !o2o */ for (pbox = boxes; pbox != cfg; pbox = pbox->next) - if (!memcmp( pbox->server_name, buf, hl + 1 )) { + if (!memcmp( pbox->old_server_name, buf, hl + 1 )) { nfasprintf( (char **)&cfg->old_server_name, "%s-%d", buf, ++pbox->old_servers ); goto gotsrv; } @@ -275,6 +277,8 @@ write_imap_server( FILE *fp, config_t *cfg ) gotsrv: ; } + /* The "new" server names determine the names of the accounts themselves. + * They are optimized for descriptiveness, e.g. in password prompts. */ if (cfg->user) nfsnprintf( ubuf, sizeof(ubuf), "%s@", cfg->user ); else