projects
/
u
/
mdw
/
putty
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add a how-to section on public-key authentication in PSCP
[u/mdw/putty]
/
window.c
diff --git
a/window.c
b/window.c
index
2e68239
..
cdc58dc
100644
(file)
--- a/
window.c
+++ b/
window.c
@@
-101,13
+101,10
@@
static Mouse_Button lastbtn;
static char *window_name, *icon_name;
static char *window_name, *icon_name;
-static Ldisc *real_ldisc;
-
static int compose_state = 0;
static int compose_state = 0;
-void begin_session(void) {
- ldisc = real_ldisc;
-}
+/* Dummy routine, only required in plink. */
+void ldisc_update(int echo, int edit) {}
int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show) {
static char appname[] = "PuTTY";
int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show) {
static char appname[] = "PuTTY";
@@
-318,11
+315,6
@@
int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show) {
return 1;
}
return 1;
}
- real_ldisc = (cfg.ldisc_term ? &ldisc_term : &ldisc_simple);
- /* To start with, we use the simple line discipline, so we can
- * type passwords etc without fear of them being echoed... */
- ldisc = &ldisc_simple;
-
if (!prev) {
wndclass.style = 0;
wndclass.lpfnWndProc = WndProc;
if (!prev) {
wndclass.style = 0;
wndclass.lpfnWndProc = WndProc;
@@
-564,7
+556,8
@@
int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show) {
}
if(!timer_id)
timer_id = SetTimer(hwnd, 1, 20, NULL);
}
if(!timer_id)
timer_id = SetTimer(hwnd, 1, 20, NULL);
- DispatchMessage (&msg);
+ if (!(IsWindow(logbox) && IsDialogMessage(logbox, &msg)))
+ DispatchMessage (&msg);
/* Make sure we blink everything that needs it. */
term_blink(0);
/* Make sure we blink everything that needs it. */
term_blink(0);
@@
-674,7
+667,7
@@
void connection_fatal(char *fmt, ...) {
vsprintf(stuff, fmt, ap);
va_end(ap);
MessageBox(hwnd, stuff, "PuTTY Fatal Error", MB_ICONERROR | MB_OK);
vsprintf(stuff, fmt, ap);
va_end(ap);
MessageBox(hwnd, stuff, "PuTTY Fatal Error", MB_ICONERROR | MB_OK);
- if (cfg.close_on_exit)
+ if (cfg.close_on_exit
== COE_ALWAYS
)
PostQuitMessage(1);
else {
session_closed = TRUE;
PostQuitMessage(1);
else {
session_closed = TRUE;
@@
-699,14
+692,17
@@
static void enact_pending_netevent(void) {
ret = select_result (pend_netevent_wParam, pend_netevent_lParam);
reentering = 0;
ret = select_result (pend_netevent_wParam, pend_netevent_lParam);
reentering = 0;
- if (ret == 0) {
- if (cfg.close_on_exit)
+ 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);
else {
PostQuitMessage(0);
else {
- session_closed = TRUE;
- MessageBox(hwnd, "Connection closed by remote host",
- "PuTTY", MB_OK | MB_ICONINFORMATION);
-
SetWindowText (hwnd, "PuTTY (inactive)"
);
+
session_closed = TRUE;
+ SetWindowText (hwnd, "PuTTY (inactive)");
+ MessageBox(hwnd, "Connection closed by remote host",
+
"PuTTY", MB_OK | MB_ICONINFORMATION
);
}
}
}
}
}
}
@@
-1219,11
+1215,10
@@
static LRESULT CALLBACK WndProc (HWND hwnd, UINT message,
init_fonts(0);
sfree(logpal);
/*
init_fonts(0);
sfree(logpal);
/*
- *
Telnet will change local echo -> remote if
the
- *
remote asks
.
+ *
Flush the line discipline's edit buffer in
the
+ *
case where local editing has just been disabled
.
*/
*/
- if (cfg.protocol != PROT_TELNET)
- ldisc = (cfg.ldisc_term ? &ldisc_term : &ldisc_simple);
+ ldisc_send(NULL, 0);
if (pal)
DeleteObject(pal);
logpal = NULL;
if (pal)
DeleteObject(pal);
logpal = NULL;
@@
-1614,7
+1609,7
@@
static LRESULT CALLBACK WndProc (HWND hwnd, UINT message,
len = TranslateKey (message, wParam, lParam, buf);
if (len == -1)
return DefWindowProc (hwnd, message, wParam, lParam);
len = TranslateKey (message, wParam, lParam, buf);
if (len == -1)
return DefWindowProc (hwnd, message, wParam, lParam);
- ldisc
->
send (buf, len);
+ ldisc
_
send (buf, len);
if (len > 0)
show_mouseptr(0);
if (len > 0)
show_mouseptr(0);
@@
-1627,7
+1622,7
@@
static LRESULT CALLBACK WndProc (HWND hwnd, UINT message,
buf[1] = wParam;
buf[0] = wParam >> 8;
buf[1] = wParam;
buf[0] = wParam >> 8;
- ldisc
->
send (buf, 2);
+ ldisc
_
send (buf, 2);
}
case WM_CHAR:
case WM_SYSCHAR:
}
case WM_CHAR:
case WM_SYSCHAR:
@@
-1639,7
+1634,7
@@
static LRESULT CALLBACK WndProc (HWND hwnd, UINT message,
*/
{
char c = xlat_kbd2tty((unsigned char)wParam);
*/
{
char c = xlat_kbd2tty((unsigned char)wParam);
- ldisc
->
send (&c, 1);
+ ldisc
_
send (&c, 1);
}
return 0;
}
}
return 0;
}