Work around sqlite's incorrect handling of umask when creating databases.
Refactored some common code into initDb. This only deals with the problem when creating new databases. If a repo got bad permissions into it, it's up to the user to deal with it. This commit was sponsored by Ole-Morten Duesund on Patreon.
This commit is contained in:
parent
d2174915c0
commit
3b22ad9f47
10 changed files with 135 additions and 42 deletions
|
@ -1,6 +1,6 @@
|
|||
{- File mode utilities.
|
||||
-
|
||||
- Copyright 2010-2012 Joey Hess <id@joeyh.name>
|
||||
- Copyright 2010-2017 Joey Hess <id@joeyh.name>
|
||||
-
|
||||
- License: BSD-2-clause
|
||||
-}
|
||||
|
@ -130,6 +130,21 @@ withUmask umask a = bracket setup cleanup go
|
|||
withUmask _ a = a
|
||||
#endif
|
||||
|
||||
getUmask :: IO FileMode
|
||||
#ifndef mingw32_HOST_OS
|
||||
getUmask = bracket setup cleanup return
|
||||
where
|
||||
setup = setFileCreationMask nullFileMode
|
||||
cleanup = setFileCreationMask
|
||||
#else
|
||||
getUmask = return nullFileMode
|
||||
#endif
|
||||
|
||||
defaultFileMode :: IO FileMode
|
||||
defaultFileMode = do
|
||||
umask <- getUmask
|
||||
return $ intersectFileModes (complement umask) stdFileMode
|
||||
|
||||
combineModes :: [FileMode] -> FileMode
|
||||
combineModes [] = 0
|
||||
combineModes [m] = m
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue