__hscore_open from HsBase.h
simonmar at microsoft.com
Tue Nov 14 06:31:17 EST 2006
Bulat Ziganshin wrote:
> Hello Simon,
> Tuesday, November 14, 2006, 11:57:37 AM, you wrote:
>>> #ifdef mingw32_HOST_OS
>>> if ((how & O_WRONLY) || (how & O_RDWR) || (how & O_APPEND))
>>> return _sopen(file,how,_SH_DENYRW,mode);
>>> return _sopen(file,how,_SH_DENYWR,mode);
>>> return open(file,how,mode);
>> 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?
> so, the first question: WHO wrote this? may be SOF?
> 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.
> 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.
More information about the Cvs-ghc