Use createFile_NoRetry from win32 2.13.3.1
Sponsored-by: Tobias Ammann on Patreon
This commit is contained in:
parent
ef8e481ebd
commit
472f5c142b
4 changed files with 23 additions and 3 deletions
|
@ -1,11 +1,11 @@
|
|||
{- Windows lock files
|
||||
-
|
||||
- Copyright 2014,2021 Joey Hess <id@joeyh.name>
|
||||
- Copyright 2014,2022 Joey Hess <id@joeyh.name>
|
||||
-
|
||||
- License: BSD-2-clause
|
||||
-}
|
||||
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
{-# LANGUAGE OverloadedStrings, CPP #-}
|
||||
|
||||
module Utility.LockFile.Windows (
|
||||
lockShared,
|
||||
|
@ -61,12 +61,21 @@ lockExclusive = openLock fILE_SHARE_NONE
|
|||
openLock :: ShareMode -> LockFile -> IO (Maybe LockHandle)
|
||||
openLock sharemode f = do
|
||||
f' <- convertToNativeNamespace f
|
||||
#if MIN_VERSION_win32(2,13,3)
|
||||
r <- tryNonAsync $ createFile_NoRetry f' gENERIC_READ sharemode
|
||||
security_attributes oPEN_ALWAYS fILE_ATTRIBUTE_NORMAL
|
||||
(maybePtr Nothing)
|
||||
return $ case r of
|
||||
Left _ -> Nothing
|
||||
Right h -> Just h
|
||||
#else
|
||||
h <- withTString (fromRawFilePath f') $ \c_f ->
|
||||
c_CreateFile c_f gENERIC_READ sharemode security_attributes
|
||||
oPEN_ALWAYS fILE_ATTRIBUTE_NORMAL (maybePtr Nothing)
|
||||
return $ if h == iNVALID_HANDLE_VALUE
|
||||
then Nothing
|
||||
else Just h
|
||||
#endif
|
||||
where
|
||||
security_attributes = maybePtr Nothing
|
||||
|
||||
|
|
|
@ -53,3 +53,5 @@ using Windows LockFileEx, for instance the one by my compatriot: <https://hackag
|
|||
|
||||
[[!meta title="windows: prepare for System.Win32.File not exporting c_ entities"]]
|
||||
[[!meta author=jkniiv]]
|
||||
|
||||
> [[fixed|done]] --[[Joey]]
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
[[!comment format=mdwn
|
||||
username="joey"
|
||||
subject="""comment 4"""
|
||||
date="2022-08-02T14:43:47Z"
|
||||
content="""
|
||||
The necessary change will be in win32 2.13.3.1, which should be released
|
||||
in due course. And I've made a (so far untested) change to git-annex to
|
||||
support that version.
|
||||
"""]]
|
|
@ -402,7 +402,7 @@ Executable git-annex
|
|||
|
||||
if (os(windows))
|
||||
Build-Depends:
|
||||
Win32 (>= 2.6.1.0 && < 2.12.0.0),
|
||||
Win32 ((>= 2.6.1.0 && < 2.12.0.0) || >= 2.13.3.1),
|
||||
setenv,
|
||||
process (>= 1.6.2.0),
|
||||
silently (>= 1.2.5.1)
|
||||
|
|
Loading…
Reference in a new issue