Add a couple of missing return values
[u/mdw/putty] / window.c
index 3fd445f..e2107ec 100644 (file)
--- a/window.c
+++ b/window.c
@@ -128,7 +128,7 @@ static char *window_name, *icon_name;
 
 static int compose_state = 0;
 
-static OSVERSIONINFOEX osVersion;
+static OSVERSIONINFO osVersion;
 
 /* Dummy routine, only required in plink. */
 void ldisc_update(int echo, int edit)
@@ -170,15 +170,12 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show)
 
     {
        ZeroMemory(&osVersion, sizeof(osVersion));
-       osVersion.dwOSVersionInfoSize = sizeof(osVersion);
-
-       if(!GetVersionEx ((OSVERSIONINFO *) &osVersion)) {
-       // If OSVERSIONINFOEX doesn't work, try OSVERSIONINFO.
-
-       osVersion.dwOSVersionInfoSize = sizeof (osVersion);
-       if (!GetVersionEx ( (OSVERSIONINFO *) &osVersion))
-           return FALSE;
-       }
+       osVersion.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);
+       if (!GetVersionEx ( (OSVERSIONINFO *) &osVersion)) {
+            MessageBox(NULL, "Windows refuses to report a version",
+                       "PuTTY Fatal Error", MB_OK | MB_ICONEXCLAMATION);
+           return 1;
+        }
     }
 
     /*
@@ -709,7 +706,7 @@ char *do_select(SOCKET skt, int startup)
     int msg, events;
     if (startup) {
        msg = WM_NETEVENT;
-       events = FD_READ | FD_WRITE | FD_OOB | FD_CLOSE;
+       events = FD_READ | FD_WRITE | FD_OOB | FD_CLOSE | FD_ACCEPT;
     } else {
        msg = events = 0;
     }
@@ -1866,6 +1863,14 @@ static LRESULT CALLBACK WndProc(HWND hwnd, UINT message,
                len = TranslateKey(message, wParam, lParam, buf);
                if (len == -1)
                    return DefWindowProc(hwnd, message, wParam, lParam);
+
+               /*
+                * We need not bother about stdin backlogs here,
+                * because in GUI PuTTY we can't do anything about
+                * it anyway; there's no means of asking Windows to
+                * hold off on KEYDOWN messages. We _have_ to
+                * buffer everything we're sent.
+                */
                ldisc_send(buf, len);
 
                if (len > 0)
@@ -3001,6 +3006,15 @@ static int TranslateKey(UINT message, WPARAM wParam, LPARAM lParam,
                            luni_send(&keybuf, 1);
                        } else {
                            ch = (char) alt_sum;
+                           /*
+                            * We need not bother about stdin
+                            * backlogs here, because in GUI PuTTY
+                            * we can't do anything about it
+                            * anyway; there's no means of asking
+                            * Windows to hold off on KEYDOWN
+                            * messages. We _have_ to buffer
+                            * everything we're sent.
+                            */
                            ldisc_send(&ch, 1);
                        }
                        alt_sum = 0;