avoid overhead of fcntl when setting close-on-exec
unix-2.8.0 adds cloexec to OpenFileFlags, rather than needing to call setFdOption after opening. This also might avoid a race, if another thread started a process at just the wrong time, before the flag got set, it could inherit the FD. Unfortunately, the arm64-ancient build needs support for older versions of unix than that, so had to ifdef. That build is still needed to support using git-annex in termux on phones like mine, I have confirmed today. Sponsored-by: Luke T. Shumaker
This commit is contained in:
parent
e1dcf98b78
commit
6ba848d275
2 changed files with 12 additions and 1 deletions
|
@ -53,8 +53,12 @@ openLock' lck = do
|
|||
#ifndef mingw32_HOST_OS
|
||||
-- On unix, git simply uses O_EXCL
|
||||
h <- openFdWithMode (fromOsPath lck) ReadWrite (Just 0O666)
|
||||
#if MIN_VERSION_unix(2,8,0)
|
||||
(defaultFileFlags { exclusive = True, cloexec = True })
|
||||
#else
|
||||
(defaultFileFlags { exclusive = True })
|
||||
setFdOption h CloseOnExec True
|
||||
#endif
|
||||
#else
|
||||
-- It's not entirely clear how git manages locking on Windows,
|
||||
-- since it's buried in the portability layer, and different
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue