X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/2979718aac984b9456d093e4a4b6c81952942691..8f1612752a89ea821dbd63491aef858f7f7e5bef:/winmisc.c diff --git a/winmisc.c b/winmisc.c index caafd7d7..a524b96f 100644 --- 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;