From 95a9448ff70b692889c6f93d4495af3d73c23bab Mon Sep 17 00:00:00 2001 From: simon Date: Sat, 10 Feb 2007 17:02:41 +0000 Subject: [PATCH] Avoid launching a session from the Default Settings, even if they do represent a launchable session, unless the user can be construed to have really meant it. This means: - starting up PuTTY when the Default Settings are launchable still brings up the config box, and you have to hit Open to actually launch that session - double-clicking on Default Settings from the config box will load them but not launch them. On the other hand: - explicitly loading the Default Settings on the command line using `-load' _does_ still launch them. git-svn-id: svn://svn.tartarus.org/sgt/putty@7265 cda61777-01e9-0310-a592-d414129be87e --- config.c | 17 ++++++++++++----- unix/gtkwin.c | 3 ++- windows/window.c | 3 ++- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/config.c b/config.c index d3e59aa5..128660ed 100644 --- a/config.c +++ b/config.c @@ -383,7 +383,7 @@ struct sessionsaver_data { */ static int load_selected_session(struct sessionsaver_data *ssd, char *savedsession, - void *dlg, Config *cfg) + void *dlg, Config *cfg, int *maybe_launch) { int i = dlg_listbox_index(ssd->listbox, dlg); int isdef; @@ -397,8 +397,12 @@ static int load_selected_session(struct sessionsaver_data *ssd, strncpy(savedsession, ssd->sesslist.sessions[i], SAVEDSESSION_LEN); savedsession[SAVEDSESSION_LEN-1] = '\0'; + if (maybe_launch) + *maybe_launch = TRUE; } else { savedsession[0] = '\0'; + if (maybe_launch) + *maybe_launch = FALSE; } dlg_refresh(NULL, dlg); /* Restore the selection, which might have been clobbered by @@ -464,6 +468,7 @@ static void sessionsaver_handler(union control *ctrl, void *dlg, dlg_listbox_select(ssd->listbox, dlg, top); } } else if (event == EVENT_ACTION) { + int mbl = FALSE; if (!ssd->midsession && (ctrl == ssd->listbox || (ssd->loadbutton && ctrl == ssd->loadbutton))) { @@ -474,8 +479,8 @@ static void sessionsaver_handler(union control *ctrl, void *dlg, * double-click on the list box _and_ that session * contains a hostname. */ - if (load_selected_session(ssd, savedsession, dlg, cfg) && - (ctrl == ssd->listbox && cfg_launchable(cfg))) { + if (load_selected_session(ssd, savedsession, dlg, cfg, &mbl) && + (mbl && ctrl == ssd->listbox && cfg_launchable(cfg))) { dlg_end(dlg, 1); /* it's all over, and succeeded */ } } else if (ctrl == ssd->savebutton) { @@ -533,12 +538,14 @@ static void sessionsaver_handler(union control *ctrl, void *dlg, if (dlg_last_focused(ctrl, dlg) == ssd->listbox && !cfg_launchable(cfg)) { Config cfg2; - if (!load_selected_session(ssd, savedsession, dlg, &cfg2)) { + int mbl = FALSE; + if (!load_selected_session(ssd, savedsession, dlg, + &cfg2, &mbl)) { dlg_beep(dlg); return; } /* If at this point we have a valid session, go! */ - if (*cfg2.host) { + if (mbl && cfg_launchable(&cfg2)) { *cfg = cfg2; /* structure copy */ cfg->remote_cmd_ptr = NULL; dlg_end(dlg, 1); diff --git a/unix/gtkwin.c b/unix/gtkwin.c index 430e2b58..816211a5 100644 --- a/unix/gtkwin.c +++ b/unix/gtkwin.c @@ -3486,7 +3486,8 @@ int pt_main(int argc, char **argv) cmdline_run_saved(&inst->cfg); - if (!cfg_launchable(&inst->cfg) && !cfgbox(&inst->cfg)) + if ((!loaded_session || !cfg_launchable(&inst->cfg)) && + !cfgbox(&inst->cfg)) exit(0); /* config box hit Cancel */ } diff --git a/windows/window.c b/windows/window.c index 477e6333..b7561cf2 100644 --- a/windows/window.c +++ b/windows/window.c @@ -539,7 +539,8 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show) cmdline_run_saved(&cfg); - if (!cfg_launchable(&cfg) && !do_config()) { + if ((!loaded_session || !cfg_launchable(&cfg)) && + !do_config()) { cleanup_exit(0); } -- 2.11.0