Bulat Ziganshin wrote: > Hello Simon, > > Tuesday, November 14, 2006, 2:31:17 PM, you wrote: > >>>>> #ifdef mingw32_HOST_OS >>>>> if ((how & O_WRONLY) || (how & O_RDWR) || (how & >>>>> O_APPEND)) return _sopen(file,how,_SH_DENYRW,mode); >>>>> else >>>>> return _sopen(file,how,_SH_DENYWR,mode); >>>>> #else >>>>> return open(file,how,mode); >>>>> #endif >>> >>>> I haven't seen this code before, but I wonder if it's an attempt to >>>> implement the single-writer multiple-reader locking semantics in >>>> the Haskell 98 IO library? > >>> and second question: HOW this may help this semantics?? in my >>> investigation, simple 'open' is just fine - it prevents writing by >>> other processes to the file being written by Haskell program and it >>> allow to read and write open by other processes of the file that i >>> only read. > >> But does it allow the file to be opened for reading multiple times >> by the current process? Perhaps that's the issue. > > no problem at all. i even can read file modified by the same process > >>> may be it was problems on old windowses? and may be this some bug >>> and this should be rewritten as DENY_WRITE and DENY_NONE, >>> correspondingly >>> >>> btw, what is a semantics on Unix? is it the same as i mentioned >>> above? > >> On Unix by default you can open a file as many times as you like, >> both for reading and writing. To enforce any restrictions you have >> to use locks. > > i.e. no sopen at all? in this case, other parts of library should > make proper locking for unix.
Yes, we do. See http://darcs.haskell.org/packages/base/cbits/lockFile.c. > but for windows, the code above allow to EITHER multiple readers OR > one writer. to allow multiple readers AND one writer simultaneously, > it should be written as No, multiple readers *or* a single writer is what the Haskell spec says. Go check your Haskell Report. Cheers, Simon _______________________________________________ Cvs-ghc mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/cvs-ghc