X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/2979718aac984b9456d093e4a4b6c81952942691..f4ff9455ce1b9e6ccc9c580966c3a2a002bc20d1:/winmisc.c diff --git a/winmisc.c b/winmisc.c index caafd7d7..2357ea6d 100644 --- a/winmisc.c +++ b/winmisc.c @@ -1,12 +1,12 @@ /* - * winmisc.c: miscellaneous Windows-specific things. + * winmisc.c: miscellaneous Windows-specific things */ -#include #include #include #include "putty.h" -#include "winstuff.h" + +OSVERSIONINFO osVersion; void platform_get_x11_auth(char *display, int *proto, unsigned char *data, int *datalen) @@ -37,6 +37,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 +62,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 +81,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 +89,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 +103,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;