X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/d0912d1f5b4c65b0be0c3fba2a264a1cfbf96d08..7440fd4419acfc9c784f142fb9dee3e64c9a18c2:/winmisc.c diff --git a/winmisc.c b/winmisc.c index 2590befe..7e58e93d 100644 --- a/winmisc.c +++ b/winmisc.c @@ -2,11 +2,12 @@ * winmisc.c: miscellaneous Windows-specific things. */ -#include #include #include #include "putty.h" +OSVERSIONINFO osVersion; + void platform_get_x11_auth(char *display, int *proto, unsigned char *data, int *datalen) { @@ -36,6 +37,79 @@ 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, + DLGPROC lpDialogFunc) +{ + WNDCLASS wc; + HWND hwnd; + MSG msg; + int flags; + int ret; + int gm; + + wc.style = CS_DBLCLKS | CS_SAVEBITS | CS_BYTEALIGNWINDOW; + wc.lpfnWndProc = DefDlgProc; + wc.cbClsExtra = 0; + wc.cbWndExtra = DLGWINDOWEXTRA + 8; + wc.hInstance = hinst; + wc.hIcon = NULL; + wc.hCursor = LoadCursor(NULL, IDC_ARROW); + wc.hbrBackground = (HBRUSH) (COLOR_BACKGROUND +1); + wc.lpszMenuName = NULL; + wc.lpszClassName = "PuTTYConfigBox"; + RegisterClass(&wc); + + hwnd = CreateDialog(hinst, tmpl, hwndparent, lpDialogFunc); + + SetWindowLong(hwnd, BOXFLAGS, 0); /* flags */ + SetWindowLong(hwnd, BOXRESULT, 0); /* result from SaneEndDialog */ + + while ((gm=GetMessage(&msg, NULL, 0, 0)) > 0) { + flags=GetWindowLong(hwnd, BOXFLAGS); + if (!(flags & DF_END) && !IsDialogMessage(hwnd, &msg)) + DispatchMessage(&msg); + if (flags & DF_END) + break; + } + + if (gm == 0) + PostQuitMessage(msg.wParam); /* We got a WM_QUIT, pass it on */ + + ret=GetWindowLong(hwnd, BOXRESULT); + DestroyWindow(hwnd); + return ret; +} + +void SaneEndDialog(HWND hwnd, int ret) +{ + SetWindowLong(hwnd, BOXRESULT, 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;