Hello Simon,

Tuesday, November 14, 2006, 4:02:09 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.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.

after some thought, i still want to complain. locking files while it's
open on Windows and using special procedure on Unix is internal trick
of Handle-based I/O library. it's bad that this trick was exposed as
non-consistent behavior of c_open call which, by its name, is
proposed for general use by other libs

i think that proper design was either to make such function internal
to GHC.Handle module, or incorporate all necessary locking logic into
the c_open/c_close and make exhaustive doc-comment to warn users
thinking that c_open should be the same as raw C open() call

in current situation when some code besides of GHC.* may rely on this
strange inconsistent behavior i think at least commenting it will be a
good idea



-- 
Best regards,
 Bulat                            mailto:[EMAIL PROTECTED]

_______________________________________________
Cvs-ghc mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to