diff options
author | Ruslan Mustakov <r.mustakov@gmail.com> | 2018-02-17 17:40:28 +0700 |
---|---|---|
committer | Ruslan Mustakov <r.mustakov@gmail.com> | 2018-02-17 17:40:35 +0700 |
commit | 319e88585a25c57164f28f084ef8d75fbd9c34ed (patch) | |
tree | 86a40b4e39cd6d865a5963f3265cd578f796ba03 | |
parent | b5538990a2f0260b1ab04df3c73ecf9a7f927ad2 (diff) | |
download | Nim-319e88585a25c57164f28f084ef8d75fbd9c34ed.tar.gz |
Fix AsyncFile open flags. Fixes #5531
-rw-r--r-- | lib/pure/asyncfile.nim | 13 | ||||
-rw-r--r-- | lib/windows/winlean.nim | 1 | ||||
-rw-r--r-- | tests/async/tasyncfile.nim | 4 |
3 files changed, 9 insertions, 9 deletions
diff --git a/lib/pure/asyncfile.nim b/lib/pure/asyncfile.nim index 6ce9e8f75..97bec2815 100644 --- a/lib/pure/asyncfile.nim +++ b/lib/pure/asyncfile.nim @@ -50,22 +50,21 @@ when defined(windows) or defined(nimdoc): case mode of fmRead, fmReadWriteExisting: OPEN_EXISTING - of fmAppend, fmReadWrite, fmWrite: - if fileExists(filename): - OPEN_EXISTING - else: - CREATE_NEW + of fmReadWrite, fmWrite: + CREATE_ALWAYS + of fmAppend: + OPEN_ALWAYS else: proc getPosixFlags(mode: FileMode): cint = case mode of fmRead: result = O_RDONLY of fmWrite: - result = O_WRONLY or O_CREAT + result = O_WRONLY or O_CREAT or O_TRUNC of fmAppend: result = O_WRONLY or O_CREAT or O_APPEND of fmReadWrite: - result = O_RDWR or O_CREAT + result = O_RDWR or O_CREAT or O_TRUNC of fmReadWriteExisting: result = O_RDWR result = result or O_NONBLOCK diff --git a/lib/windows/winlean.nim b/lib/windows/winlean.nim index bd6e58a10..b2c1cc1f5 100644 --- a/lib/windows/winlean.nim +++ b/lib/windows/winlean.nim @@ -666,6 +666,7 @@ const CREATE_ALWAYS* = 2'i32 CREATE_NEW* = 1'i32 OPEN_EXISTING* = 3'i32 + OPEN_ALWAYS* = 4'i32 FILE_BEGIN* = 0'i32 INVALID_SET_FILE_POINTER* = -1'i32 NO_ERROR* = 0'i32 diff --git a/tests/async/tasyncfile.nim b/tests/async/tasyncfile.nim index 6c0725c88..aa7f03ab1 100644 --- a/tests/async/tasyncfile.nim +++ b/tests/async/tasyncfile.nim @@ -41,11 +41,11 @@ proc main() {.async.} = await file.write("test2") file.close() file = openAsync(fn, fmWrite) - await file.write("test3") + await file.write("t3") file.close() file = openAsync(fn, fmRead) let data = await file.readAll() - doAssert data == "test3" + doAssert data == "t3" file.close() |