Hi all, I found a way to issue an actual sync() on win32, and as browsing through winsup directory gave me only this
winsup/sygwin/syscalls.cc #1128 extern "C" int sync () { return 0; } I think cygwin DLL might benefit from a code I found by looking in sync.exe by M.Russinovich, which is schematically as such: int sync( char drive) { HANDLE f; int ret; char file[7] = "\\\\.\\X:"; file[5] = drive; f = CreateFile( file, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL); if ((int) f < 0) return -1; ret = FlushFileBuffers(f) ? 0 : -1; CloseHandle(f); return ret; } And yes, it is working and doing actual sync of the corresponding file system, at least on my w2k machine. I do not know if there are any issues or why sync() wasn't implemented yet but I think this may improve cygwin implementations of sync(), fsync(), and probably msync(). Cheers, Dmitry Karasik PS. This message is probably better off to developers@ or patches@ or whatever, but I don't want to subscribe for sending this letter only. PPS. If you'd prefer an actual patch instead of the vague code just tell me and I'll resubmit. -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/