#include "terminal.h"
#include "ldisc.h"
-#define ECHOING (ldisc->cfg->localecho == LD_YES || \
- (ldisc->cfg->localecho == LD_BACKEND && \
+#define ECHOING (ldisc->cfg->localecho == FORCE_ON || \
+ (ldisc->cfg->localecho == AUTO && \
(ldisc->back->ldisc(ldisc->backhandle, LD_ECHO) || \
term_ldisc(ldisc->term, LD_ECHO))))
-#define EDITING (ldisc->cfg->localedit == LD_YES || \
- (ldisc->cfg->localedit == LD_BACKEND && \
+#define EDITING (ldisc->cfg->localedit == FORCE_ON || \
+ (ldisc->cfg->localedit == AUTO && \
(ldisc->back->ldisc(ldisc->backhandle, LD_EDIT) || \
term_ldisc(ldisc->term, LD_EDIT))))
#include "proxy.h"
#define do_proxy_dns(cfg) \
- (cfg->proxy_dns == 2 || \
- (cfg->proxy_dns == 1 && cfg->proxy_type != PROXY_SOCKS))
+ (cfg->proxy_dns == FORCE_ON || \
+ (cfg->proxy_dns == AUTO && cfg->proxy_type != PROXY_SOCKS))
/*
* Call this when proxy negotiation is complete, so that this
#define PK_ISKEYPAD(k) ((k) >= PK_PF1 && (k) <= PK_KPENTER)
#define PK_ISFKEY(k) ((k) >= PK_F1 && (k) <= PK_F20)
-typedef enum {
+enum {
VT_XWINDOWS, VT_OEMANSI, VT_OEMONLY, VT_POORMAN, VT_UNICODE
-} VT_Mode;
+};
enum {
/*
enum {
/*
- * Line discipline option states: off, on, up to the backend.
+ * Several different bits of the PuTTY configuration seem to be
+ * three-way settings whose values are `always yes', `always
+ * no', and `decide by some more complex automated means'. This
+ * is true of line discipline options (local echo and line
+ * editing), proxy DNS, Close On Exit, and SSH server bug
+ * workarounds. Accordingly I supply a single enum here to deal
+ * with them all.
*/
- LD_YES, LD_NO, LD_BACKEND
+ FORCE_ON, FORCE_OFF, AUTO
+};
+
+enum {
+ /*
+ * Proxy types.
+ */
+ PROXY_NONE, PROXY_HTTP, PROXY_SOCKS, PROXY_TELNET
};
enum {
};
enum {
- /*
- * Close On Exit behaviours. (cfg.close_on_exit)
- */
- COE_NEVER, /* Never close the window */
- COE_NORMAL, /* Close window on "normal" (non-error) exits only */
- COE_ALWAYS /* Always close the window */
+ /* Protocol back ends. (cfg.protocol) */
+ PROT_RAW, PROT_TELNET, PROT_RLOGIN, PROT_SSH
+};
+
+enum {
+ /* Bell settings (cfg.beep) */
+ BELL_DISABLED, BELL_DEFAULT, BELL_VISUAL, BELL_WAVEFILE
+};
+
+enum {
+ /* Taskbar flashing indication on bell (cfg.beep_ind) */
+ B_IND_DISABLED, B_IND_FLASH, B_IND_STEADY
+};
+
+enum {
+ /* Resize actions (cfg.resize_action) */
+ RESIZE_TERM, RESIZE_DISABLED, RESIZE_FONT, RESIZE_EITHER
};
enum {
*/
extern const int be_default_protocol;
+/*
+ * IMPORTANT POLICY POINT: everything in this structure which wants
+ * to be treated like an integer must be an actual, honest-to-
+ * goodness `int'. No enum-typed variables. This is because parts
+ * of the code will want to pass around `int *' pointers to them
+ * and we can't run the risk of porting to some system on which the
+ * enum comes out as a different size from int.
+ */
struct config_tag {
/* Basic options */
char host[512];
int port;
- enum { PROT_RAW, PROT_TELNET, PROT_RLOGIN, PROT_SSH } protocol;
+ int protocol;
int close_on_exit;
int warn_on_close;
int ping_interval; /* in seconds */
int tcp_nodelay;
/* Proxy options */
char proxy_exclude_list[512];
- enum { PROXYDNS_NO, PROXYDNS_AUTO, PROXYDNS_YES } proxy_dns;
+ int proxy_dns;
int even_proxy_localhost;
- enum { PROXY_NONE, PROXY_HTTP, PROXY_SOCKS, PROXY_TELNET } proxy_type;
+ int proxy_type;
char proxy_host[512];
int proxy_port;
char proxy_username[32];
int lfhascr;
int cursor_type; /* 0=block 1=underline 2=vertical */
int blink_cur;
- enum {
- BELL_DISABLED, BELL_DEFAULT, BELL_VISUAL, BELL_WAVEFILE
- } beep;
- enum {
- B_IND_DISABLED, B_IND_FLASH, B_IND_STEADY
- } beep_ind;
+ int beep;
+ int beep_ind;
int bellovl; /* bell overload protection active? */
int bellovl_n; /* number of bells to cause overload */
int bellovl_t; /* time interval for overload (seconds) */
char bell_wavefile[FILENAME_MAX];
int scrollbar;
int scrollbar_in_fullscreen;
- enum { RESIZE_TERM, RESIZE_DISABLED, RESIZE_FONT, RESIZE_EITHER } resize_action;
+ int resize_action;
int bce;
int blinktext;
int win_name_always;
int mouse_override;
short wordness[256];
/* translations */
- VT_Mode vtmode;
+ int vtmode;
char line_codepage[128];
int xlat_capslockcyr;
/* X11 forwarding */
int rport_acceptall; /* same for remote forwarded ports (SSH2 only) */
char portfwd[1024]; /* [LR]localport\thost:port\000[LR]localport\thost:port\000\000 */
/* SSH bug compatibility modes */
- enum {
- BUG_AUTO, BUG_OFF, BUG_ON
- } sshbug_ignore1, sshbug_plainpw1, sshbug_rsa1,
+ int sshbug_ignore1, sshbug_plainpw1, sshbug_rsa1,
sshbug_hmac2, sshbug_derivekey2, sshbug_rsapad2,
sshbug_dhgex2;
/* Options for pterm. Should split out into platform-dependent part. */
break;
}
- /*
- * CloseOnExit defaults to closing only on a clean exit - but
- * unfortunately not on Unix (pterm). On Unix, the exit code of
- * a shell is the last exit code of one of its child processes,
- * even if it's an interactive shell - so some pterms will
- * close and some will not for no particularly good reason. The
- * mode is still useful for specialist purposes (running a
- * single command in its own pterm), but I don't think it's a
- * sane default, unfortunately.
- */
- gppi(sesskey, "CloseOnExit", COE_NORMAL, &cfg->close_on_exit);
+ gppi(sesskey, "CloseOnExit", AUTO, &cfg->close_on_exit);
gppi(sesskey, "WarnOnClose", 1, &cfg->warn_on_close);
{
/* This is two values for backward compatibility with 0.50/0.51 */
/* proxy settings */
gpps(sesskey, "ProxyExcludeList", "", cfg->proxy_exclude_list,
sizeof(cfg->proxy_exclude_list));
- gppi(sesskey, "ProxyDNS", PROXYDNS_AUTO, &i); cfg->proxy_dns = i;
+ gppi(sesskey, "ProxyDNS", AUTO, &cfg->proxy_dns);
gppi(sesskey, "ProxyLocalhost", 0, &cfg->even_proxy_localhost);
- gppi(sesskey, "ProxyType", PROXY_NONE, &i); cfg->proxy_type = i;
+ gppi(sesskey, "ProxyType", PROXY_NONE, &cfg->proxy_type);
gpps(sesskey, "ProxyHost", "proxy", cfg->proxy_host,
sizeof(cfg->proxy_host));
gppi(sesskey, "ProxyPort", 80, &cfg->proxy_port);
gppi(sesskey, "CtrlAltKeys", 1, &cfg->ctrlaltkeys);
gppi(sesskey, "TelnetKey", 0, &cfg->telnet_keyboard);
gppi(sesskey, "TelnetRet", 1, &cfg->telnet_newline);
- gppi(sesskey, "LocalEcho", LD_BACKEND, &cfg->localecho);
- gppi(sesskey, "LocalEdit", LD_BACKEND, &cfg->localedit);
+ gppi(sesskey, "LocalEcho", AUTO, &cfg->localecho);
+ gppi(sesskey, "LocalEdit", AUTO, &cfg->localedit);
gpps(sesskey, "Answerback", "PuTTY", cfg->answerback,
sizeof(cfg->answerback));
gppi(sesskey, "AlwaysOnTop", 0, &cfg->alwaysontop);
gppi(sesskey, "CurType", 0, &cfg->cursor_type);
gppi(sesskey, "BlinkCur", 0, &cfg->blink_cur);
/* pedantic compiler tells me I can't use &cfg->beep as an int * :-) */
- gppi(sesskey, "Beep", 1, &i); cfg->beep = i;
- gppi(sesskey, "BeepInd", 0, &i); cfg->beep_ind = i;
+ gppi(sesskey, "Beep", 1, &cfg->beep);
+ gppi(sesskey, "BeepInd", 0, &cfg->beep_ind);
gpps(sesskey, "BellWaveFile", "", cfg->bell_wavefile,
sizeof(cfg->bell_wavefile));
gppi(sesskey, "BellOverload", 1, &cfg->bellovl);
gppi(sesskey, "ScrollBarFullScreen", 0, &cfg->scrollbar_in_fullscreen);
gppi(sesskey, "ScrollOnKey", 0, &cfg->scroll_on_key);
gppi(sesskey, "ScrollOnDisp", 1, &cfg->scroll_on_disp);
- gppi(sesskey, "LockSize", 0, &i); cfg->resize_action = i;
+ gppi(sesskey, "LockSize", 0, &cfg->resize_action);
gppi(sesskey, "BCE", 1, &cfg->bce);
gppi(sesskey, "BlinkText", 0, &cfg->blinktext);
gppi(sesskey, "X11Forward", 0, &cfg->x11_forward);
}
*q = '\0';
}
- gppi(sesskey, "BugIgnore1", BUG_AUTO, &i); cfg->sshbug_ignore1 = i;
- gppi(sesskey, "BugPlainPW1", BUG_AUTO, &i); cfg->sshbug_plainpw1 = i;
- gppi(sesskey, "BugRSA1", BUG_AUTO, &i); cfg->sshbug_rsa1 = i;
+ gppi(sesskey, "BugIgnore1", AUTO, &cfg->sshbug_ignore1);
+ gppi(sesskey, "BugPlainPW1", AUTO, &cfg->sshbug_plainpw1);
+ gppi(sesskey, "BugRSA1", AUTO, &cfg->sshbug_rsa1);
{
int i;
- gppi(sesskey, "BugHMAC2", BUG_AUTO, &i); cfg->sshbug_hmac2 = i;
- if (cfg->sshbug_hmac2 == BUG_AUTO) {
+ gppi(sesskey, "BugHMAC2", AUTO, &cfg->sshbug_hmac2);
+ if (cfg->sshbug_hmac2 == AUTO) {
gppi(sesskey, "BuggyMAC", 0, &i);
if (i == 1)
- cfg->sshbug_hmac2 = BUG_ON;
+ cfg->sshbug_hmac2 = FORCE_ON;
}
}
- gppi(sesskey, "BugDeriveKey2", BUG_AUTO, &i); cfg->sshbug_derivekey2 = i;
- gppi(sesskey, "BugRSAPad2", BUG_AUTO, &i); cfg->sshbug_rsapad2 = i;
- gppi(sesskey, "BugDHGEx2", BUG_AUTO, &i); cfg->sshbug_dhgex2 = i;
+ gppi(sesskey, "BugDeriveKey2", AUTO, &cfg->sshbug_derivekey2);
+ gppi(sesskey, "BugRSAPad2", AUTO, &cfg->sshbug_rsapad2);
+ gppi(sesskey, "BugDHGEx2", AUTO, &cfg->sshbug_dhgex2);
gppi(sesskey, "StampUtmp", 1, &cfg->stamp_utmp);
gppi(sesskey, "LoginShell", 1, &cfg->login_shell);
gppi(sesskey, "ScrollbarOnLeft", 0, &cfg->scrollbar_on_left);
ssh->remote_bugs = 0;
- if (ssh->cfg.sshbug_ignore1 == BUG_ON ||
- (ssh->cfg.sshbug_ignore1 == BUG_AUTO &&
+ if (ssh->cfg.sshbug_ignore1 == FORCE_ON ||
+ (ssh->cfg.sshbug_ignore1 == AUTO &&
(!strcmp(imp, "1.2.18") || !strcmp(imp, "1.2.19") ||
!strcmp(imp, "1.2.20") || !strcmp(imp, "1.2.21") ||
!strcmp(imp, "1.2.22") || !strcmp(imp, "Cisco-1.25")))) {
logevent("We believe remote version has SSH1 ignore bug");
}
- if (ssh->cfg.sshbug_plainpw1 == BUG_ON ||
- (ssh->cfg.sshbug_plainpw1 == BUG_AUTO &&
+ if (ssh->cfg.sshbug_plainpw1 == FORCE_ON ||
+ (ssh->cfg.sshbug_plainpw1 == AUTO &&
(!strcmp(imp, "Cisco-1.25")))) {
/*
* These versions need a plain password sent; they can't
logevent("We believe remote version needs a plain SSH1 password");
}
- if (ssh->cfg.sshbug_rsa1 == BUG_ON ||
- (ssh->cfg.sshbug_rsa1 == BUG_AUTO &&
+ if (ssh->cfg.sshbug_rsa1 == FORCE_ON ||
+ (ssh->cfg.sshbug_rsa1 == AUTO &&
(!strcmp(imp, "Cisco-1.25")))) {
/*
* These versions apparently have no clue whatever about
logevent("We believe remote version can't handle RSA authentication");
}
- if (ssh->cfg.sshbug_hmac2 == BUG_ON ||
- (ssh->cfg.sshbug_hmac2 == BUG_AUTO &&
+ if (ssh->cfg.sshbug_hmac2 == FORCE_ON ||
+ (ssh->cfg.sshbug_hmac2 == AUTO &&
(wc_match("2.1.0*", imp) || wc_match("2.0.*", imp) ||
wc_match("2.2.0*", imp) || wc_match("2.3.0*", imp) ||
wc_match("2.1 *", imp)))) {
logevent("We believe remote version has SSH2 HMAC bug");
}
- if (ssh->cfg.sshbug_derivekey2 == BUG_ON ||
- (ssh->cfg.sshbug_derivekey2 == BUG_AUTO &&
+ if (ssh->cfg.sshbug_derivekey2 == FORCE_ON ||
+ (ssh->cfg.sshbug_derivekey2 == AUTO &&
(wc_match("2.0.0*", imp) || wc_match("2.0.1[01]*", imp) ))) {
/*
* These versions have the key-derivation bug (failing to
logevent("We believe remote version has SSH2 key-derivation bug");
}
- if (ssh->cfg.sshbug_rsapad2 == BUG_ON ||
- (ssh->cfg.sshbug_rsapad2 == BUG_AUTO &&
+ if (ssh->cfg.sshbug_rsapad2 == FORCE_ON ||
+ (ssh->cfg.sshbug_rsapad2 == AUTO &&
(wc_match("OpenSSH_2.[5-9]*", imp) ||
wc_match("OpenSSH_3.[0-2]*", imp)))) {
/*
logevent("We believe remote version has SSH2 RSA padding bug");
}
- if (ssh->cfg.sshbug_dhgex2 == BUG_ON) {
+ if (ssh->cfg.sshbug_dhgex2 == FORCE_ON) {
/*
* User specified the SSH2 DH GEX bug.
*/
char *platform_default_s(const char *name)
{
if (!strcmp(name, "Font"))
- return "fixed"; /* COE_NORMAL works badly in an xterm */
+ return "fixed";
return NULL;
}
int platform_default_i(const char *name, int def)
{
if (!strcmp(name, "CloseOnExit"))
- return COE_ALWAYS; /* COE_NORMAL works badly in an xterm */
+ return FORCE_ON; /* AUTO works badly in an xterm */
return def;
}
* Terminate now, if the Close On Exit setting is
* appropriate.
*/
- if (inst->cfg.close_on_exit == COE_ALWAYS ||
- (inst->cfg.close_on_exit == COE_NORMAL && clean))
+ if (inst->cfg.close_on_exit == FORCE_ON ||
+ (inst->cfg.close_on_exit == AUTO && clean))
exit(0);
/*
CheckDlgButton(hwnd, IDC_TELNETKEY, cfg.telnet_keyboard);
CheckDlgButton(hwnd, IDC_TELNETRET, cfg.telnet_newline);
CheckRadioButton(hwnd, IDC_ECHOBACKEND, IDC_ECHONO,
- cfg.localecho == LD_BACKEND ? IDC_ECHOBACKEND :
- cfg.localecho == LD_YES ? IDC_ECHOYES : IDC_ECHONO);
+ cfg.localecho == AUTO ? IDC_ECHOBACKEND :
+ cfg.localecho == FORCE_ON ? IDC_ECHOYES : IDC_ECHONO);
CheckRadioButton(hwnd, IDC_EDITBACKEND, IDC_EDITNO,
- cfg.localedit == LD_BACKEND ? IDC_EDITBACKEND :
- cfg.localedit == LD_YES ? IDC_EDITYES : IDC_EDITNO);
+ cfg.localedit == AUTO ? IDC_EDITBACKEND :
+ cfg.localedit == FORCE_ON ? IDC_EDITYES : IDC_EDITNO);
SetDlgItemText(hwnd, IDC_ANSWEREDIT, cfg.answerback);
CheckDlgButton(hwnd, IDC_ALWAYSONTOP, cfg.alwaysontop);
CheckDlgButton(hwnd, IDC_FULLSCREENONALTENTER, cfg.fullscreenonaltenter);
cfg.resize_action == RESIZE_EITHER ? IDC_RESIZEEITHER :
IDC_RESIZENONE);
CheckRadioButton(hwnd, IDC_COEALWAYS, IDC_COENORMAL,
- cfg.close_on_exit == COE_NORMAL ? IDC_COENORMAL :
+ cfg.close_on_exit == AUTO ? IDC_COENORMAL :
cfg.close_on_exit ==
- COE_NEVER ? IDC_COENEVER : IDC_COEALWAYS);
+ FORCE_OFF ? IDC_COENEVER : IDC_COEALWAYS);
CheckDlgButton(hwnd, IDC_CLOSEWARN, cfg.warn_on_close);
SetDlgItemText(hwnd, IDC_TTEDIT, cfg.termtype);
SetDlgItemText(hwnd, IDC_PROXYEXCLUDEEDIT, cfg.proxy_exclude_list);
CheckDlgButton(hwnd, IDC_PROXYLOCALHOST, cfg.even_proxy_localhost);
CheckRadioButton(hwnd, IDC_PROXYDNSNO, IDC_PROXYDNSYES,
- cfg.proxy_dns == PROXYDNS_NO ? IDC_PROXYDNSNO :
- cfg.proxy_dns == PROXYDNS_YES ? IDC_PROXYDNSYES :
+ cfg.proxy_dns == FORCE_OFF ? IDC_PROXYDNSNO :
+ cfg.proxy_dns == FORCE_ON ? IDC_PROXYDNSYES :
IDC_PROXYDNSAUTO);
SetDlgItemText(hwnd, IDC_PROXYTELNETCMDEDIT, cfg.proxy_telnet_command);
SetDlgItemText(hwnd, IDC_PROXYUSEREDIT, cfg.proxy_username);
SendDlgItemMessage(hwnd, IDC_BUGD_IGNORE1, CB_ADDSTRING, 0, (LPARAM)"Off");
SendDlgItemMessage(hwnd, IDC_BUGD_IGNORE1, CB_ADDSTRING, 0, (LPARAM)"On");
SendDlgItemMessage(hwnd, IDC_BUGD_IGNORE1, CB_SETCURSEL,
- cfg.sshbug_ignore1 == BUG_ON ? 2 :
- cfg.sshbug_ignore1 == BUG_OFF ? 1 : 0, 0);
+ cfg.sshbug_ignore1 == FORCE_ON ? 2 :
+ cfg.sshbug_ignore1 == FORCE_OFF ? 1 : 0, 0);
SendDlgItemMessage(hwnd, IDC_BUGD_PLAINPW1, CB_RESETCONTENT, 0, 0);
SendDlgItemMessage(hwnd, IDC_BUGD_PLAINPW1, CB_ADDSTRING, 0, (LPARAM)"Auto");
SendDlgItemMessage(hwnd, IDC_BUGD_PLAINPW1, CB_ADDSTRING, 0, (LPARAM)"Off");
SendDlgItemMessage(hwnd, IDC_BUGD_PLAINPW1, CB_ADDSTRING, 0, (LPARAM)"On");
SendDlgItemMessage(hwnd, IDC_BUGD_PLAINPW1, CB_SETCURSEL,
- cfg.sshbug_plainpw1 == BUG_ON ? 2 :
- cfg.sshbug_plainpw1 == BUG_OFF ? 1 : 0, 0);
+ cfg.sshbug_plainpw1 == FORCE_ON ? 2 :
+ cfg.sshbug_plainpw1 == FORCE_OFF ? 1 : 0, 0);
SendDlgItemMessage(hwnd, IDC_BUGD_RSA1, CB_RESETCONTENT, 0, 0);
SendDlgItemMessage(hwnd, IDC_BUGD_RSA1, CB_ADDSTRING, 0, (LPARAM)"Auto");
SendDlgItemMessage(hwnd, IDC_BUGD_RSA1, CB_ADDSTRING, 0, (LPARAM)"Off");
SendDlgItemMessage(hwnd, IDC_BUGD_RSA1, CB_ADDSTRING, 0, (LPARAM)"On");
SendDlgItemMessage(hwnd, IDC_BUGD_RSA1, CB_SETCURSEL,
- cfg.sshbug_rsa1 == BUG_ON ? 2 :
- cfg.sshbug_rsa1 == BUG_OFF ? 1 : 0, 0);
+ cfg.sshbug_rsa1 == FORCE_ON ? 2 :
+ cfg.sshbug_rsa1 == FORCE_OFF ? 1 : 0, 0);
SendDlgItemMessage(hwnd, IDC_BUGD_HMAC2, CB_RESETCONTENT, 0, 0);
SendDlgItemMessage(hwnd, IDC_BUGD_HMAC2, CB_ADDSTRING, 0, (LPARAM)"Auto");
SendDlgItemMessage(hwnd, IDC_BUGD_HMAC2, CB_ADDSTRING, 0, (LPARAM)"Off");
SendDlgItemMessage(hwnd, IDC_BUGD_HMAC2, CB_ADDSTRING, 0, (LPARAM)"On");
SendDlgItemMessage(hwnd, IDC_BUGD_HMAC2, CB_SETCURSEL,
- cfg.sshbug_hmac2 == BUG_ON ? 2 :
- cfg.sshbug_hmac2 == BUG_OFF ? 1 : 0, 0);
+ cfg.sshbug_hmac2 == FORCE_ON ? 2 :
+ cfg.sshbug_hmac2 == FORCE_OFF ? 1 : 0, 0);
SendDlgItemMessage(hwnd, IDC_BUGD_DERIVEKEY2, CB_RESETCONTENT, 0, 0);
SendDlgItemMessage(hwnd, IDC_BUGD_DERIVEKEY2, CB_ADDSTRING, 0, (LPARAM)"Auto");
SendDlgItemMessage(hwnd, IDC_BUGD_DERIVEKEY2, CB_ADDSTRING, 0, (LPARAM)"Off");
SendDlgItemMessage(hwnd, IDC_BUGD_DERIVEKEY2, CB_ADDSTRING, 0, (LPARAM)"On");
SendDlgItemMessage(hwnd, IDC_BUGD_DERIVEKEY2, CB_SETCURSEL,
- cfg.sshbug_derivekey2 == BUG_ON ? 2 :
- cfg.sshbug_derivekey2 == BUG_OFF ? 1 : 0, 0);
+ cfg.sshbug_derivekey2 == FORCE_ON ? 2 :
+ cfg.sshbug_derivekey2 == FORCE_OFF ? 1 : 0, 0);
SendDlgItemMessage(hwnd, IDC_BUGD_RSAPAD2, CB_RESETCONTENT, 0, 0);
SendDlgItemMessage(hwnd, IDC_BUGD_RSAPAD2, CB_ADDSTRING, 0, (LPARAM)"Auto");
SendDlgItemMessage(hwnd, IDC_BUGD_RSAPAD2, CB_ADDSTRING, 0, (LPARAM)"Off");
SendDlgItemMessage(hwnd, IDC_BUGD_RSAPAD2, CB_ADDSTRING, 0, (LPARAM)"On");
SendDlgItemMessage(hwnd, IDC_BUGD_RSAPAD2, CB_SETCURSEL,
- cfg.sshbug_rsapad2 == BUG_ON ? 2 :
- cfg.sshbug_rsapad2 == BUG_OFF ? 1 : 0, 0);
+ cfg.sshbug_rsapad2 == FORCE_ON ? 2 :
+ cfg.sshbug_rsapad2 == FORCE_OFF ? 1 : 0, 0);
SendDlgItemMessage(hwnd, IDC_BUGD_DHGEX2, CB_RESETCONTENT, 0, 0);
SendDlgItemMessage(hwnd, IDC_BUGD_DHGEX2, CB_ADDSTRING, 0, (LPARAM)"Auto");
SendDlgItemMessage(hwnd, IDC_BUGD_DHGEX2, CB_ADDSTRING, 0, (LPARAM)"Off");
SendDlgItemMessage(hwnd, IDC_BUGD_DHGEX2, CB_ADDSTRING, 0, (LPARAM)"On");
SendDlgItemMessage(hwnd, IDC_BUGD_DHGEX2, CB_SETCURSEL,
- cfg.sshbug_dhgex2 == BUG_ON ? 2 :
- cfg.sshbug_dhgex2 == BUG_OFF ? 1 : 0, 0);
+ cfg.sshbug_dhgex2 == FORCE_ON ? 2 :
+ cfg.sshbug_dhgex2 == FORCE_OFF ? 1 : 0, 0);
}
struct treeview_faff {
if (HIWORD(wParam) == BN_CLICKED ||
HIWORD(wParam) == BN_DOUBLECLICKED) {
if (LOWORD(wParam) == IDC_ECHOBACKEND)
- cfg.localecho = LD_BACKEND;
+ cfg.localecho = AUTO;
if (LOWORD(wParam) == IDC_ECHOYES)
- cfg.localecho = LD_YES;
+ cfg.localecho = FORCE_ON;
if (LOWORD(wParam) == IDC_ECHONO)
- cfg.localecho = LD_NO;
+ cfg.localecho = FORCE_OFF;
}
break;
case IDC_EDITBACKEND:
if (HIWORD(wParam) == BN_CLICKED ||
HIWORD(wParam) == BN_DOUBLECLICKED) {
if (LOWORD(wParam) == IDC_EDITBACKEND)
- cfg.localedit = LD_BACKEND;
+ cfg.localedit = AUTO;
if (LOWORD(wParam) == IDC_EDITYES)
- cfg.localedit = LD_YES;
+ cfg.localedit = FORCE_ON;
if (LOWORD(wParam) == IDC_EDITNO)
- cfg.localedit = LD_NO;
+ cfg.localedit = FORCE_OFF;
}
break;
case IDC_ANSWEREDIT:
HIWORD(wParam) == BN_DOUBLECLICKED) {
cfg.close_on_exit =
IsDlgButtonChecked(hwnd,
- IDC_COEALWAYS) ? COE_ALWAYS :
+ IDC_COEALWAYS) ? FORCE_ON :
IsDlgButtonChecked(hwnd,
- IDC_COENEVER) ? COE_NEVER :
- COE_NORMAL;
+ IDC_COENEVER) ? FORCE_OFF :
+ AUTO;
}
break;
case IDC_CLOSEWARN:
if (HIWORD(wParam) == BN_CLICKED ||
HIWORD(wParam) == BN_DOUBLECLICKED) {
cfg.proxy_dns =
- IsDlgButtonChecked(hwnd, IDC_PROXYDNSNO) ? PROXYDNS_NO :
- IsDlgButtonChecked(hwnd, IDC_PROXYDNSYES) ? PROXYDNS_YES :
- PROXYDNS_AUTO;
+ IsDlgButtonChecked(hwnd, IDC_PROXYDNSNO) ? FORCE_OFF :
+ IsDlgButtonChecked(hwnd, IDC_PROXYDNSYES) ? FORCE_ON :
+ AUTO;
}
break;
case IDC_PROXYTYPENONE:
if (HIWORD(wParam) == CBN_SELCHANGE) {
int index = SendDlgItemMessage(hwnd, IDC_BUGD_IGNORE1,
CB_GETCURSEL, 0, 0);
- cfg.sshbug_ignore1 = (index == 0 ? BUG_AUTO :
- index == 1 ? BUG_OFF : BUG_ON);
+ cfg.sshbug_ignore1 = (index == 0 ? AUTO :
+ index == 1 ? FORCE_OFF : FORCE_ON);
}
break;
case IDC_BUGD_PLAINPW1:
if (HIWORD(wParam) == CBN_SELCHANGE) {
int index = SendDlgItemMessage(hwnd, IDC_BUGD_PLAINPW1,
CB_GETCURSEL, 0, 0);
- cfg.sshbug_plainpw1 = (index == 0 ? BUG_AUTO :
- index == 1 ? BUG_OFF : BUG_ON);
+ cfg.sshbug_plainpw1 = (index == 0 ? AUTO :
+ index == 1 ? FORCE_OFF : FORCE_ON);
}
break;
case IDC_BUGD_RSA1:
if (HIWORD(wParam) == CBN_SELCHANGE) {
int index = SendDlgItemMessage(hwnd, IDC_BUGD_RSA1,
CB_GETCURSEL, 0, 0);
- cfg.sshbug_rsa1 = (index == 0 ? BUG_AUTO :
- index == 1 ? BUG_OFF : BUG_ON);
+ cfg.sshbug_rsa1 = (index == 0 ? AUTO :
+ index == 1 ? FORCE_OFF : FORCE_ON);
}
break;
case IDC_BUGD_HMAC2:
if (HIWORD(wParam) == CBN_SELCHANGE) {
int index = SendDlgItemMessage(hwnd, IDC_BUGD_HMAC2,
CB_GETCURSEL, 0, 0);
- cfg.sshbug_hmac2 = (index == 0 ? BUG_AUTO :
- index == 1 ? BUG_OFF : BUG_ON);
+ cfg.sshbug_hmac2 = (index == 0 ? AUTO :
+ index == 1 ? FORCE_OFF : FORCE_ON);
}
break;
case IDC_BUGD_DERIVEKEY2:
if (HIWORD(wParam) == CBN_SELCHANGE) {
int index = SendDlgItemMessage(hwnd, IDC_BUGD_DERIVEKEY2,
CB_GETCURSEL, 0, 0);
- cfg.sshbug_derivekey2 = (index == 0 ? BUG_AUTO :
- index == 1 ? BUG_OFF : BUG_ON);
+ cfg.sshbug_derivekey2 = (index == 0 ? AUTO :
+ index == 1 ? FORCE_OFF:FORCE_ON);
}
break;
case IDC_BUGD_RSAPAD2:
if (HIWORD(wParam) == CBN_SELCHANGE) {
int index = SendDlgItemMessage(hwnd, IDC_BUGD_RSAPAD2,
CB_GETCURSEL, 0, 0);
- cfg.sshbug_rsapad2 = (index == 0 ? BUG_AUTO :
- index == 1 ? BUG_OFF : BUG_ON);
+ cfg.sshbug_rsapad2 = (index == 0 ? AUTO :
+ index == 1 ? FORCE_OFF : FORCE_ON);
}
break;
case IDC_BUGD_DHGEX2:
if (HIWORD(wParam) == CBN_SELCHANGE) {
int index = SendDlgItemMessage(hwnd, IDC_BUGD_DHGEX2,
CB_GETCURSEL, 0, 0);
- cfg.sshbug_dhgex2 = (index == 0 ? BUG_AUTO :
- index == 1 ? BUG_OFF : BUG_ON);
+ cfg.sshbug_dhgex2 = (index == 0 ? AUTO :
+ index == 1 ? FORCE_OFF : FORCE_ON);
}
break;
}
vsprintf(stuff, fmt, ap);
va_end(ap);
MessageBox(hwnd, stuff, "PuTTY Fatal Error", MB_ICONERROR | MB_OK);
- if (cfg.close_on_exit == COE_ALWAYS)
+ if (cfg.close_on_exit == FORCE_ON)
PostQuitMessage(1);
else {
session_closed = TRUE;
if (ret == 0 && !session_closed) {
/* Abnormal exits will already have set session_closed and taken
* appropriate action. */
- if (cfg.close_on_exit == COE_ALWAYS ||
- cfg.close_on_exit == COE_NORMAL) PostQuitMessage(0);
+ if (cfg.close_on_exit == FORCE_ON ||
+ cfg.close_on_exit == AUTO) PostQuitMessage(0);
else {
session_closed = TRUE;
set_icon(NULL, "PuTTY (inactive)");