]> asedeno.scripts.mit.edu Git - PuTTY.git/commitdiff
Avoid launching a session from the Default Settings, even if they do
authorSimon Tatham <anakin@pobox.com>
Sat, 10 Feb 2007 17:02:41 +0000 (17:02 +0000)
committerSimon Tatham <anakin@pobox.com>
Sat, 10 Feb 2007 17:02:41 +0000 (17:02 +0000)
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.

[originally from svn r7265]

config.c
unix/gtkwin.c
windows/window.c

index d3e59aa59f4981092ac2db0f9c2d159f745467a0..128660ed2d190e556ef93ede08106ce9cbedc6e0 100644 (file)
--- 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);
index 430e2b584c69d47d8752d76fabe3a16a3cab4e96..816211a54c86e56a95be6e5652d92405b8b04186 100644 (file)
@@ -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 */
     }
 
index 477e6333dbc0e0cf816172e735fa7b2865f3bb62..b7561cf22a90db3628e485f561ed3d5c50e91ffa 100644 (file)
@@ -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);
        }