return 0;
}
+/*
+ * Null dialog procedure.
+ */
+static int CALLBACK NullDlgProc (HWND hwnd, UINT msg,
+ WPARAM wParam, LPARAM lParam) {
+ return 0;
+}
+
/* ----------------------------------------------------------------------
* Routines to self-manage the controls in a dialog box.
*/
IDC_CIPHER3DES,
IDC_CIPHERBLOWF,
IDC_CIPHERDES,
+ IDC_BUGGYMAC,
IDC_AUTHTIS,
IDC_PKSTATIC,
IDC_PKEDIT,
SetDlgItemText (hwnd, IDC_HOST, cfg.host);
SetDlgItemText (hwnd, IDC_SESSEDIT, savedsession);
SetDlgItemInt (hwnd, IDC_PORT, cfg.port, FALSE);
- for (i = 0; i < nsessions; i++)
- SendDlgItemMessage (hwnd, IDC_SESSLIST, LB_ADDSTRING,
- 0, (LPARAM) (sessions[i]));
CheckRadioButton (hwnd, IDC_PROTRAW, IDC_PROTSSH,
cfg.protocol==PROT_SSH ? IDC_PROTSSH :
cfg.protocol==PROT_TELNET ? IDC_PROTTELNET : IDC_PROTRAW );
cfg.bksp_is_delete ? IDC_DEL127 : IDC_DEL008);
CheckRadioButton (hwnd, IDC_HOMETILDE, IDC_HOMERXVT,
cfg.rxvt_homeend ? IDC_HOMERXVT : IDC_HOMETILDE);
- CheckRadioButton (hwnd, IDC_FUNCTILDE, IDC_FUNCXTERM,
+ CheckRadioButton (hwnd, IDC_FUNCTILDE, IDC_FUNCVT400,
cfg.funky_type == 0 ? IDC_FUNCTILDE :
cfg.funky_type == 1 ? IDC_FUNCLINUX :
cfg.funky_type == 2 ? IDC_FUNCXTERM :
SetDlgItemText (hwnd, IDC_TTEDIT, cfg.termtype);
SetDlgItemText (hwnd, IDC_LOGEDIT, cfg.username);
CheckDlgButton (hwnd, IDC_NOPTY, cfg.nopty);
+ CheckDlgButton (hwnd, IDC_BUGGYMAC, cfg.buggymac);
CheckDlgButton (hwnd, IDC_AGENTFWD, cfg.agentfwd);
CheckRadioButton (hwnd, IDC_CIPHER3DES, IDC_CIPHERDES,
cfg.cipher == CIPHER_BLOWFISH ? IDC_CIPHERBLOWF :
}
/* The SSH panel. Accelerators used: [acgo] rmakwp123bd */
- {
+ if (backends[2].backend != NULL) {
struct ctlpos cp;
ctlposinit(&cp, hwnd, 80, 3, 13);
if (dlgtype == 0) {
"&3DES", IDC_CIPHER3DES,
"&Blowfish", IDC_CIPHERBLOWF,
"&DES", IDC_CIPHERDES, NULL);
+ checkbox(&cp, "Imitate SSH 2 MAC bug in commercial <= v2.3.x",
+ IDC_BUGGYMAC);
endbox(&cp);
treeview_insert(&tvfaff, 1, "SSH");
}
init_dlg_ctrls(hwnd);
+ for (i = 0; i < nsessions; i++)
+ SendDlgItemMessage (hwnd, IDC_SESSLIST, LB_ADDSTRING,
+ 0, (LPARAM) (sessions[i]));
/*
* Hide all the controls to start with.
{
int n = SendDlgItemMessage (hwnd, IDC_SESSLIST,
LB_GETCURSEL, 0, 0);
+ int isdef;
if (n == LB_ERR) {
MessageBeep(0);
break;
}
- load_settings (sessions[n],
- !!strcmp(sessions[n], "Default Settings"),
- &cfg);
+ isdef = !strcmp(sessions[n], "Default Settings");
+ load_settings (sessions[n], !isdef, &cfg);
init_dlg_ctrls(hwnd);
+ if (!isdef)
+ SetDlgItemText(hwnd, IDC_SESSEDIT, sessions[n]);
}
if (LOWORD(wParam) == IDC_SESSLIST) {
/*
HIWORD(wParam) == BN_DOUBLECLICKED)
cfg.nopty = IsDlgButtonChecked (hwnd, IDC_NOPTY);
break;
+ case IDC_BUGGYMAC:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.buggymac = IsDlgButtonChecked (hwnd, IDC_BUGGYMAC);
+ break;
case IDC_AGENTFWD:
if (HIWORD(wParam) == BN_CLICKED ||
HIWORD(wParam) == BN_DOUBLECLICKED)
return GenericMainDlgProc (hwnd, msg, wParam, lParam, 1);
}
+int defuse_showwindow(void) {
+ /*
+ * Work around the fact that the app's first call to ShowWindow
+ * will ignore the default in favour of the shell-provided
+ * setting.
+ */
+ {
+ HWND hwnd;
+ hwnd = CreateDialog (hinst, MAKEINTRESOURCE(IDD_ABOUTBOX),
+ NULL, NullDlgProc);
+ ShowWindow(hwnd, SW_HIDE);
+ DestroyWindow(hwnd);
+ }
+}
+
int do_config (void) {
int ret;