X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Fio%2Ffile.cpp;h=805a9e8dba0072270d90a8cb695faa681e710e3a;hp=208371df8bff5b33bedb5ddbd72847dfc6fcf7d2;hb=959bb34629f786cd64f666029407e60bdd37d418;hpb=fd074aa05df58fd60d490bb4e367aa2c82338741 diff --git a/source/io/file.cpp b/source/io/file.cpp index 208371d..805a9e8 100644 --- a/source/io/file.cpp +++ b/source/io/file.cpp @@ -26,11 +26,13 @@ File::File(const string &fn, Mode m, CreateMode cm) #ifdef WIN32 int flags = 0; + int share_flags = 0; int create_flags = OPEN_EXISTING; if(mode&M_READ) flags |= GENERIC_READ; - else if(mode&M_WRITE) + + if(mode&M_WRITE) { flags |= GENERIC_WRITE; @@ -39,12 +41,14 @@ File::File(const string &fn, Mode m, CreateMode cm) case C_NONE: create_flags = OPEN_EXISTING; break; case C_CREATE: create_flags = OPEN_ALWAYS; break; case C_TRUNCATE: create_flags = TRUNCATE_EXISTING; break; - case C_CREATE+C_TRUNCATE: create_flags = CREATE_ALWAYS; break; - case C_CREATE+C_EXCLUSIVE: create_flags = CREATE_NEW; break; + case C_OVERWRITE: create_flags = CREATE_ALWAYS; break; + case C_NEW: create_flags = CREATE_NEW; break; } } + else + share_flags = FILE_SHARE_READ; - *handle = CreateFile(fn.c_str(), flags, 0, 0, create_flags, FILE_ATTRIBUTE_NORMAL, 0); + *handle = CreateFile(fn.c_str(), flags, share_flags, 0, create_flags, FILE_ATTRIBUTE_NORMAL, 0); if(!handle) { int err = GetLastError();