merge generalization of writeFileProtected from propellor
This commit is contained in:
parent
986e245ac1
commit
d40dea58e3
1 changed files with 8 additions and 3 deletions
|
@ -11,6 +11,7 @@ module Utility.FileMode where
|
||||||
|
|
||||||
import System.IO
|
import System.IO
|
||||||
import Control.Monad
|
import Control.Monad
|
||||||
|
import Control.Exception (bracket)
|
||||||
import System.PosixCompat.Types
|
import System.PosixCompat.Types
|
||||||
import Utility.PosixFiles
|
import Utility.PosixFiles
|
||||||
#ifndef mingw32_HOST_OS
|
#ifndef mingw32_HOST_OS
|
||||||
|
@ -124,7 +125,7 @@ withUmask _ a = a
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
combineModes :: [FileMode] -> FileMode
|
combineModes :: [FileMode] -> FileMode
|
||||||
combineModes [] = 0
|
combineModes [] = undefined
|
||||||
combineModes [m] = m
|
combineModes [m] = m
|
||||||
combineModes (m:ms) = foldl unionFileModes m ms
|
combineModes (m:ms) = foldl unionFileModes m ms
|
||||||
|
|
||||||
|
@ -151,7 +152,11 @@ setSticky f = modifyFileMode f $ addModes [stickyMode]
|
||||||
- as writeFile.
|
- as writeFile.
|
||||||
-}
|
-}
|
||||||
writeFileProtected :: FilePath -> String -> IO ()
|
writeFileProtected :: FilePath -> String -> IO ()
|
||||||
writeFileProtected file content = withUmask 0o0077 $
|
writeFileProtected file content = writeFileProtected' file
|
||||||
|
(\h -> hPutStr h content)
|
||||||
|
|
||||||
|
writeFileProtected' :: FilePath -> (Handle -> IO ()) -> IO ()
|
||||||
|
writeFileProtected' file writer = withUmask 0o0077 $
|
||||||
withFile file WriteMode $ \h -> do
|
withFile file WriteMode $ \h -> do
|
||||||
void $ tryIO $ modifyFileMode file $ removeModes otherGroupModes
|
void $ tryIO $ modifyFileMode file $ removeModes otherGroupModes
|
||||||
hPutStr h content
|
writer h
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue