File tree 2 files changed +15
-2
lines changed 2 files changed +15
-2
lines changed Original file line number Diff line number Diff line change @@ -192,6 +192,7 @@ module System.Win32.File
192
192
193
193
-- * HANDLE operations
194
194
, createFile
195
+ , createFile_NoRetry
195
196
, closeHandle
196
197
, getFileType
197
198
, flushFileBuffers
@@ -349,11 +350,19 @@ getBinaryType name =
349
350
----------------------------------------------------------------
350
351
351
352
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 =
353
357
withTString name $ \ c_name ->
354
- failIfWithRetry (== iNVALID_HANDLE_VALUE) (unwords [" CreateFile" ,show name]) $
358
+ f (== iNVALID_HANDLE_VALUE) (unwords [" CreateFile" ,show name]) $
355
359
c_CreateFile c_name access share (maybePtr mb_attr) mode flag (maybePtr mb_h)
356
360
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
+
357
366
closeHandle :: HANDLE -> IO ()
358
367
closeHandle h =
359
368
failIfFalse_ " CloseHandle" $ c_CloseHandle h
Original file line number Diff line number Diff line change 1
1
# Changelog for [ ` Win32 ` package] ( http://hackage.haskell.org/package/Win32 )
2
2
3
+ ## 2.13.3.1
4
+
5
+ * Add function ` createFile_NoRetry ` (see #208 )
6
+
3
7
## 2.13.3.0 July 2022
4
8
5
9
* Add AFPP support (see #198 )
You can’t perform that action at this time.
0 commit comments