From bfb134f5e43078cb088be46d5cf3fdaca307d85e Mon Sep 17 00:00:00 2001 From: cxl Date: Fri, 2 Mar 2012 12:56:49 +0000 Subject: [PATCH] Core: FileAppend now uses NOWRITESHARE git-svn-id: svn://ultimatepp.org/upp/trunk@4643 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/Core/Stream.h | 2 +- uppsrc/Core/src.tpp/Stream$en-us.tpp | 18 ++++++++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/uppsrc/Core/Stream.h b/uppsrc/Core/Stream.h index 4186dccbf..d31d4cfb9 100644 --- a/uppsrc/Core/Stream.h +++ b/uppsrc/Core/Stream.h @@ -430,7 +430,7 @@ public: class FileAppend : public FileStream { public: - bool Open(const char *fn) { return FileStream::Open(fn, FileStream::APPEND); } + bool Open(const char *fn) { return FileStream::Open(fn, FileStream::APPEND|FileStream::NOWRITESHARE); } FileAppend(const char *fn) { Open(fn); } FileAppend() {} diff --git a/uppsrc/Core/src.tpp/Stream$en-us.tpp b/uppsrc/Core/src.tpp/Stream$en-us.tpp index 59bbe4a0d..7db194a65 100644 --- a/uppsrc/Core/src.tpp/Stream$en-us.tpp +++ b/uppsrc/Core/src.tpp/Stream$en-us.tpp @@ -1159,16 +1159,30 @@ onst]_[_^FileTime^ FileTime][@(0.0.255) `&]_[*@3 tm])&] [s2; [%-*C@3 mode]-|Open mode.&] [s3; &] [s4;%- &] +[s5;:FileStream`:`:Open`(const char`*`,dword`):%- [@(0.0.255) bool]_[* Open]([@(0.0.255) co +nst]_[@(0.0.255) char]_`*[*@3 filename], [_^dword^ dword]_[*@3 mode])&] +[s6;%- Posix specific.&] +[s2; Opens file stream in specified mode (as defined in BlockStream) +and specific POSIX access rights. [%-*@3 mode] can be one of READ, +CREATE, APPEND, READWRITE possibly combined (using `'`|`') with +flag NOWRITESHARE. This enforces exclusive write access to the +file.&] +[s7; [%-*C@3 filename]-|The name of the file.&] +[s7; [%-*C@3 mode]-|Open mode.&] +[s3; &] +[s4;%- &] [s5;:FileStream`:`:Open`(const char`*`,dword`,mode`_t`):%- [@(0.0.255) bool]_[* Open]([@(0.0.255) c onst]_[@(0.0.255) char]_`*[*@3 filename], [_^dword^ dword]_[*@3 mode], mode`_t_[*@3 acm]_`=_[@3 0644])&] [s6;%- Posix specific.&] [s2; Opens file stream in specified mode (as defined in BlockStream) and specific POSIX access rights. [%-*@3 mode] can be one of READ, -CREATE, APPEND, READWRITE&] +CREATE, APPEND, READWRITE possibly combined (using `'`|`') with +flag NOWRITESHARE. This flag uses flock system call to enforce +exclusive write access to the file.&] [s7; [%-*C@3 filename]-|The name of the file.&] [s7; [%-*C@3 mode]-|Open mode.&] -[s7; [%- acm]-|Access rights.&] +[s7; [%-*C@3 acm]-|Access rights.&] [s3; &] [s4;%- &] [s5;:FileStream`:`:GetHandle`(`)const:%- HANDLE_[* GetHandle]()_[@(0.0.255) const]&]