If a new session was saved from Change Settings, a side-effect on Windows was
[u/mdw/putty] / windows / windlg.c
index 5aa20d2..91bf756 100644 (file)
@@ -40,12 +40,8 @@ static struct dlgparam dp;
 static char **events = NULL;
 static int nevents = 0, negsize = 0;
 
-static int requested_help;
-
 extern Config cfg;                    /* defined in window.c */
 
-struct sesslist sesslist;             /* exported to window.c */
-
 #define PRINTER_DISABLED_STRING "None (printing disabled)"
 
 void force_normal(HWND hwnd)
@@ -364,6 +360,8 @@ static void create_controls(HWND hwnd, char *path)
 
 /*
  * This function is the configuration box.
+ * (Being a dialog procedure, in general it returns 0 if the default
+ * dialog processing should be performed, and 1 if it should not.)
  */
 static int CALLBACK GenericMainDlgProc(HWND hwnd, UINT msg,
                                       WPARAM wParam, LPARAM lParam)
@@ -649,7 +647,7 @@ int do_config(void)
     int ret;
 
     ctrlbox = ctrl_new_box();
-    setup_config_box(ctrlbox, &sesslist, FALSE, 0, 0);
+    setup_config_box(ctrlbox, FALSE, 0, 0);
     win_setup_config_box(ctrlbox, &dp.hwnd, (help_path != NULL), FALSE);
     dp_init(&dp);
     winctrl_init(&ctrls_base);
@@ -661,11 +659,9 @@ int do_config(void)
     dp.data = &cfg;
     dp.shortcuts['g'] = TRUE;         /* the treeview: `Cate&gory' */
 
-    get_sesslist(&sesslist, TRUE);
     ret =
        SaneDialogBox(hinst, MAKEINTRESOURCE(IDD_MAINBOX), NULL,
                  GenericMainDlgProc);
-    get_sesslist(&sesslist, FALSE);
 
     ctrl_free_box(ctrlbox);
     winctrl_cleanup(&ctrls_panel);
@@ -683,7 +679,7 @@ int do_reconfig(HWND hwnd, int protcfginfo)
     backup_cfg = cfg;                 /* structure copy */
 
     ctrlbox = ctrl_new_box();
-    setup_config_box(ctrlbox, &sesslist, TRUE, cfg.protocol, protcfginfo);
+    setup_config_box(ctrlbox, TRUE, cfg.protocol, protcfginfo);
     win_setup_config_box(ctrlbox, &dp.hwnd, (help_path != NULL), TRUE);
     dp_init(&dp);
     winctrl_init(&ctrls_base);
@@ -752,28 +748,6 @@ void showabout(HWND hwnd)
     DialogBox(hinst, MAKEINTRESOURCE(IDD_ABOUTBOX), hwnd, AboutProc);
 }
 
-/* Helper function for verify_ssh_host_key(). */
-static VOID CALLBACK verify_ssh_host_key_help(LPHELPINFO lpHelpInfo)
-{
-    if (help_path) {
-       char *context = NULL;
-#define CHECK_CTX(name) \
-       do { \
-           if (lpHelpInfo->dwContextId == WINHELP_CTXID_ ## name) \
-               context = WINHELP_CTX_ ## name; \
-       } while (0)
-       CHECK_CTX(errors_hostkey_absent);
-       CHECK_CTX(errors_hostkey_changed);
-#undef CHECK_CTX
-       if (context) {
-           char *cmd = dupprintf("JI(`',`%s')", context);
-           WinHelp(hwnd, help_path, HELP_COMMAND, (DWORD)cmd);
-           sfree(cmd);
-           requested_help = TRUE;
-       }
-    }
-}
-
 int verify_ssh_host_key(void *frontend, char *host, int port, char *keytype,
                         char *keystr, char *fingerprint,
                         void (*callback)(void *ctx, int result), void *ctx)
@@ -812,23 +786,6 @@ int verify_ssh_host_key(void *frontend, char *host, int port, char *keytype,
 
     static const char mbtitle[] = "%s Security Alert";
 
-    UINT help_button = 0;
-    MSGBOXPARAMS mbox;
-
-    /*
-     * We use MessageBoxIndirect() because it allows us to specify a
-     * callback function for the Help button.
-     */
-    mbox.cbSize = sizeof(mbox);
-    mbox.hInstance = hinst;
-    mbox.hwndOwner = hwnd;
-    mbox.lpfnMsgBoxCallback = &verify_ssh_host_key_help;
-    mbox.dwLanguageId = LANG_NEUTRAL;
-
-    /* Do we have a help file? */
-    if (help_path)
-       help_button = MB_HELP;
-
     /*
      * Verify the key against the registry.
      */
@@ -838,16 +795,15 @@ int verify_ssh_host_key(void *frontend, char *host, int port, char *keytype,
        return 1;
     if (ret == 2) {                   /* key was different */
        int mbret;
-       mbox.lpszText = dupprintf(wrongmsg, appname, keytype, fingerprint,
-                                 appname);
-       mbox.lpszCaption = dupprintf(mbtitle, appname);
-       mbox.dwContextHelpId = HELPCTXID(errors_hostkey_changed);
-       mbox.dwStyle = MB_ICONWARNING | MB_YESNOCANCEL | MB_DEFBUTTON3 |
-           help_button;
-       mbret = MessageBoxIndirect(&mbox);
+       char *text = dupprintf(wrongmsg, appname, keytype, fingerprint,
+                              appname);
+       char *caption = dupprintf(mbtitle, appname);
+       mbret = message_box(text, caption,
+                           MB_ICONWARNING | MB_YESNOCANCEL | MB_DEFBUTTON3,
+                           HELPCTXID(errors_hostkey_changed));
        assert(mbret==IDYES || mbret==IDNO || mbret==IDCANCEL);
-       sfree((void *)mbox.lpszText);
-       sfree((void *)mbox.lpszCaption);
+       sfree(text);
+       sfree(caption);
        if (mbret == IDYES) {
            store_host_key(host, port, keytype, keystr);
            return 1;
@@ -857,18 +813,18 @@ int verify_ssh_host_key(void *frontend, char *host, int port, char *keytype,
     }
     if (ret == 1) {                   /* key was absent */
        int mbret;
-       mbox.lpszText = dupprintf(absentmsg, keytype, fingerprint, appname);
-       mbox.lpszCaption = dupprintf(mbtitle, appname);
-       mbox.dwContextHelpId = HELPCTXID(errors_hostkey_absent);
-       mbox.dwStyle = MB_ICONWARNING | MB_YESNOCANCEL | MB_DEFBUTTON3 |
-           help_button;
-       mbret = MessageBoxIndirect(&mbox);
+       char *text = dupprintf(absentmsg, keytype, fingerprint, appname);
+       char *caption = dupprintf(mbtitle, appname);
+       mbret = message_box(text, caption,
+                           MB_ICONWARNING | MB_YESNOCANCEL | MB_DEFBUTTON3,
+                           HELPCTXID(errors_hostkey_absent));
        assert(mbret==IDYES || mbret==IDNO || mbret==IDCANCEL);
-       sfree((void *)mbox.lpszText);
-       sfree((void *)mbox.lpszCaption);
-       if (mbret == IDYES)
+       sfree(text);
+       sfree(caption);
+       if (mbret == IDYES) {
            store_host_key(host, port, keytype, keystr);
-       if (mbret == IDNO)
+           return 1;
+       } else if (mbret == IDNO)
            return 1;
         return 0;
     }
@@ -951,7 +907,7 @@ void old_keyfile_warning(void)
 {
     static const char mbtitle[] = "%s Key File Warning";
     static const char message[] =
-       "You are loading an SSH 2 private key which has an\n"
+       "You are loading an SSH-2 private key which has an\n"
        "old version of the file format. This means your key\n"
        "file is not fully tamperproof. Future versions of\n"
        "%s may stop supporting this private key format,\n"