Sfoglia il codice sorgente

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.
Oswald Buddenhagen 11 anni fa
parent
commit
d7d5fd20bc
1 ha cambiato i file con 5 aggiunte e 1 eliminazioni
  1. 5 1
      src/compat/config.c

+ 5 - 1
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