{-# LANGUAGE CPP #-}
#if __GLASGOW_HASKELL__ >= 701
{-# LANGUAGE Trustworthy #-}
#endif
module Directory (
Permissions( Permissions, readable, writable, executable, searchable ),
createDirectory, removeDirectory, removeFile,
renameDirectory, renameFile, getDirectoryContents,
getCurrentDirectory, setCurrentDirectory,
doesFileExist, doesDirectoryExist,
getPermissions, setPermissions,
getModificationTime
) where
import System.Directory hiding (Permissions,
readable, writable, executable, searchable,
getPermissions, setPermissions)
import qualified System.Directory as SD
data Permissions = Permissions {
readable :: Bool,
writable :: Bool,
executable :: Bool,
searchable :: Bool
}
deriving (Eq, Ord, Read, Show)
getPermissions :: FilePath -> IO Permissions
getPermissions fp = do perm <- SD.getPermissions fp
return $ Permissions {
readable = SD.readable perm,
writable = SD.writable perm,
executable = SD.executable perm,
searchable = SD.searchable perm
}
setPermissions :: FilePath -> Permissions -> IO ()
setPermissions fp perm = let mkPerm = setOwnerReadable (readable perm)
. setOwnerWritable (writable perm)
. setOwnerExecutable (executable perm)
. setOwnerSearchable (searchable perm)
in SD.setPermissions fp (mkPerm emptyPermissions)