Skip to content

Commit 42fda6a

Browse files
joeyhMistuke
authored andcommitted
add createFile_NoRetry
Closes #208
1 parent 878f17d commit 42fda6a

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

System/Win32/File.hsc

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,7 @@ module System.Win32.File
192192

193193
-- * HANDLE operations
194194
, createFile
195+
, createFile_NoRetry
195196
, closeHandle
196197
, getFileType
197198
, flushFileBuffers
@@ -349,11 +350,19 @@ getBinaryType name =
349350
----------------------------------------------------------------
350351

351352
createFile :: String -> AccessMode -> ShareMode -> Maybe LPSECURITY_ATTRIBUTES -> CreateMode -> FileAttributeOrFlag -> Maybe HANDLE -> IO HANDLE
352-
createFile name access share mb_attr mode flag mb_h =
353+
createFile = createFile' failIfWithRetry
354+
355+
createFile' :: ((HANDLE -> Bool) -> String -> IO HANDLE -> IO HANDLE) -> String -> AccessMode -> ShareMode -> Maybe LPSECURITY_ATTRIBUTES -> CreateMode -> FileAttributeOrFlag -> Maybe HANDLE -> IO HANDLE
356+
createFile' f name access share mb_attr mode flag mb_h =
353357
withTString name $ \ c_name ->
354-
failIfWithRetry (==iNVALID_HANDLE_VALUE) (unwords ["CreateFile",show name]) $
358+
f (==iNVALID_HANDLE_VALUE) (unwords ["CreateFile",show name]) $
355359
c_CreateFile c_name access share (maybePtr mb_attr) mode flag (maybePtr mb_h)
356360

361+
-- | Like createFile, but does not use failIfWithRetry. If another
362+
-- process has the same file open, this will fail.
363+
createFile_NoRetry :: String -> AccessMode -> ShareMode -> Maybe LPSECURITY_ATTRIBUTES -> CreateMode -> FileAttributeOrFlag -> Maybe HANDLE -> IO HANDLE
364+
createFile_NoRetry = createFile' failIf
365+
357366
closeHandle :: HANDLE -> IO ()
358367
closeHandle h =
359368
failIfFalse_ "CloseHandle" $ c_CloseHandle h

changelog.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Changelog for [`Win32` package](http://hackage.haskell.org/package/Win32)
22

3+
## 2.13.3.1
4+
5+
* Add function `createFile_NoRetry` (see #208)
6+
37
## 2.13.3.0 July 2022
48

59
* Add AFPP support (see #198)

0 commit comments

Comments
 (0)