X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=winboard%2Fwinboard.c;h=c8bf0b209ed1f2b4212b10717487f4d67e30d24f;hb=70fcaa9016951f1a0c6f63e62846cb411be48b76;hp=50d82dde6cb4d4d8f2f0c579789e79febe4a1f0d;hpb=6e81557cc7a3d288c2b0860675b83d2c50d672e9;p=xboard.git diff --git a/winboard/winboard.c b/winboard/winboard.c index 50d82dd..c8bf0b2 100644 --- a/winboard/winboard.c +++ b/winboard/winboard.c @@ -73,6 +73,7 @@ #include #include #include +#include #if __GNUC__ #include @@ -5095,7 +5096,7 @@ WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) case IDM_Engine2Options: savedHwnd = hwnd; - if(WaitForSecond(SettingsMenuIfReady)) break; + if(WaitForEngine(&second, SettingsMenuIfReady)) break; EngineOptionsPopup(hwnd, &second); break; @@ -8113,7 +8114,8 @@ DisplayMessage(char *str1, char *str2) if (len > remain) len = remain; strncat(messageText, str2, len); } - messageText[MESSAGE_TEXT_MAX - 1] = NULLCHAR; + messageText[MESSAGE_TEXT_MAX - 1] = NULLCHAR; + safeStrCpy(lastMsg, messageText, MSG_SIZ); if (hwndMain == NULL || IsIconic(hwndMain)) return; @@ -9783,3 +9785,19 @@ SettingsPopUp(ChessProgramState *cps) { // [HGM] wrapper needed because handles must not be passed through back-end EngineOptionsPopup(savedHwnd, cps); } + +int flock(int fid, int code) +{ + HANDLE hFile = (HANDLE) _get_osfhandle(fid); + OVERLAPPED ov; + ov.hEvent = NULL; + ov.Offset = 0; + ov.OffsetHigh = 0; + switch(code) { + case 1: LockFileEx(hFile, LOCKFILE_EXCLUSIVE_LOCK, 0, 1024, 0, &ov); break; // LOCK_SH + case 2: LockFileEx(hFile, LOCKFILE_EXCLUSIVE_LOCK, 0, 1024, 0, &ov); break; // LOCK_EX + case 3: UnlockFileEx(hFile, 0, 1024, 0, &ov); break; // LOCK_UN + default: return -1; + } + return 0; +}