mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-07-16 02:27:32 -05:00
Fix for `psftp-pscp-ignore-load': Default Settings is now loaded
before "-load" is processed so that it doesn't clobber it. I've also changed the semantics of "-load" slightly for PSCP, PSFTP, and Plink: if it's specified at all, it overrides (disables) the implicit loading of session details based on a supplied hostname elsewhere (on the grounds that the user is more likely to want the "-load" session than the implicit session). (PuTTY itself doesn't do implicit loading at all, so I haven't changed it.) This means that all the PuTTY tools' behaviour is now consistent iff "-load" is specified (otherwise, some tools have implicit-session, and others don't). However, I've not documented this behaviour, as there's a good chance it will be swept away if and when we get round to sorting out how we deal with settings from multiple sources. It's intended as a "do something sensible" change. [originally from svn r4352]
This commit is contained in:
30
psftp.c
30
psftp.c
@ -1812,11 +1812,27 @@ static int psftp_connect(char *userhost, char *user, int portnumber)
|
||||
user = userhost;
|
||||
}
|
||||
|
||||
/* Try to load settings for this host */
|
||||
do_defaults(host, &cfg);
|
||||
if (cfg.host[0] == '\0') {
|
||||
/* No settings for this host; use defaults */
|
||||
do_defaults(NULL, &cfg);
|
||||
/*
|
||||
* If we haven't loaded session details already (e.g., from -load),
|
||||
* try looking for a session called "host".
|
||||
*/
|
||||
if (!loaded_session) {
|
||||
/* Try to load settings for `host' into a temporary config */
|
||||
Config cfg2;
|
||||
cfg2.host[0] = '\0';
|
||||
do_defaults(host, &cfg2);
|
||||
if (cfg2.host[0] != '\0') {
|
||||
/* Settings present and include hostname */
|
||||
/* Re-load data into the real config. */
|
||||
do_defaults(host, &cfg);
|
||||
} else {
|
||||
/* Session doesn't exist or mention a hostname. */
|
||||
/* Use `host' as a bare hostname. */
|
||||
strncpy(cfg.host, host, sizeof(cfg.host) - 1);
|
||||
cfg.host[sizeof(cfg.host) - 1] = '\0';
|
||||
}
|
||||
} else {
|
||||
/* Patch in hostname `host' to session details. */
|
||||
strncpy(cfg.host, host, sizeof(cfg.host) - 1);
|
||||
cfg.host[sizeof(cfg.host) - 1] = '\0';
|
||||
}
|
||||
@ -1996,6 +2012,10 @@ int psftp_main(int argc, char *argv[])
|
||||
|
||||
userhost = user = NULL;
|
||||
|
||||
/* Load Default Settings before doing anything else. */
|
||||
do_defaults(NULL, &cfg);
|
||||
loaded_session = FALSE;
|
||||
|
||||
errors = 0;
|
||||
for (i = 1; i < argc; i++) {
|
||||
int ret;
|
||||
|
Reference in New Issue
Block a user