Windows PSCP now links against winsftp.c, and scp.c is now a
[u/mdw/putty] / winmisc.c
index caafd7d..a524b96 100644 (file)
--- a/winmisc.c
+++ b/winmisc.c
@@ -8,6 +8,8 @@
 #include "putty.h"
 #include "winstuff.h"
 
+OSVERSIONINFO osVersion;
+
 void platform_get_x11_auth(char *display, int *proto,
                            unsigned char *data, int *datalen)
 {
@@ -37,6 +39,21 @@ int filename_is_null(Filename fn)
     return !*fn.path;
 }
 
+char *get_username(void)
+{
+    DWORD namelen;
+    char *user;
+
+    namelen = 0;
+    if (GetUserName(NULL, &namelen) == FALSE)
+       return NULL;
+
+    user = snewn(namelen, char);
+    GetUserName(user, &namelen);
+
+    return user;
+}
+
 int SaneDialogBox(HINSTANCE hinst,
                  LPCTSTR tmpl,
                  HWND hwndparent,
@@ -47,6 +64,7 @@ int SaneDialogBox(HINSTANCE hinst,
     MSG msg;
     int flags;
     int ret;
+    int gm;
 
     wc.style = CS_DBLCLKS | CS_SAVEBITS | CS_BYTEALIGNWINDOW;
     wc.lpfnWndProc = DefDlgProc;
@@ -65,7 +83,7 @@ int SaneDialogBox(HINSTANCE hinst,
     SetWindowLong(hwnd, BOXFLAGS, 0); /* flags */
     SetWindowLong(hwnd, BOXRESULT, 0); /* result from SaneEndDialog */
 
-    while (GetMessage(&msg, NULL, 0, 0)) {
+    while ((gm=GetMessage(&msg, NULL, 0, 0)) > 0) {
        flags=GetWindowLong(hwnd, BOXFLAGS);
        if (!(flags & DF_END) && !IsDialogMessage(hwnd, &msg))
            DispatchMessage(&msg);
@@ -73,6 +91,9 @@ int SaneDialogBox(HINSTANCE hinst,
            break;
     }
 
+    if (gm == 0)
+        PostQuitMessage(msg.wParam); /* We got a WM_QUIT, pass it on */
+
     ret=GetWindowLong(hwnd, BOXRESULT);
     DestroyWindow(hwnd);
     return ret;
@@ -84,6 +105,13 @@ void SaneEndDialog(HWND hwnd, int ret)
     SetWindowLong(hwnd, BOXFLAGS, DF_END);
 }
 
+BOOL init_winver(void)
+{
+    ZeroMemory(&osVersion, sizeof(osVersion));
+    osVersion.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);
+    return GetVersionEx ( (OSVERSIONINFO *) &osVersion);
+}
+
 #ifdef DEBUG
 static FILE *debug_fp = NULL;
 static HANDLE debug_hdl = INVALID_HANDLE_VALUE;