refactor
This commit is contained in:
parent
d75da353b9
commit
4bf1a5ef59
9 changed files with 39 additions and 28 deletions
32
Utility/FileMode.hs
Normal file
32
Utility/FileMode.hs
Normal file
|
@ -0,0 +1,32 @@
|
|||
{- File mode utilities.
|
||||
-
|
||||
- Copyright 2010 Joey Hess <joey@kitenet.net>
|
||||
-
|
||||
- Licensed under the GNU GPL version 3 or higher.
|
||||
-}
|
||||
|
||||
module Utility.FileMode where
|
||||
|
||||
import System.Posix.Files
|
||||
import System.Posix.Types
|
||||
import Foreign (complement)
|
||||
|
||||
{- Removes a FileMode from a file.
|
||||
- For example, call with otherWriteMode to chmod o-w -}
|
||||
unsetFileMode :: FilePath -> FileMode -> IO ()
|
||||
unsetFileMode f m = do
|
||||
s <- getFileStatus f
|
||||
setFileMode f $ fileMode s `intersectFileModes` complement m
|
||||
|
||||
{- Removes the write bits from a file. -}
|
||||
preventWrite :: FilePath -> IO ()
|
||||
preventWrite f = unsetFileMode f writebits
|
||||
where
|
||||
writebits = foldl unionFileModes ownerWriteMode
|
||||
[groupWriteMode, otherWriteMode]
|
||||
|
||||
{- Turns a file's write bit back on. -}
|
||||
allowWrite :: FilePath -> IO ()
|
||||
allowWrite f = do
|
||||
s <- getFileStatus f
|
||||
setFileMode f $ fileMode s `unionFileModes` ownerWriteMode
|
Loading…
Add table
Add a link
Reference in a new issue