0 | module System.File.Permissions
2 | import public System.File.Error
3 | import System.File.Support
4 | import public System.File.Types
8 | %foreign supportC "idris2_chmod"
10 | prim__chmod : String -> Int -> PrimIO Int
15 | data FileMode = Read | Write | Execute
19 | record Permissions where
20 | constructor MkPermissions
21 | user : List FileMode
22 | group : List FileMode
23 | others : List FileMode
26 | mkMode : Permissions -> Int
28 | = getMs (user p) * 64 + getMs (group p) * 8 + getMs (others p)
30 | getM : FileMode -> Int
35 | getMs : List FileMode -> Int
36 | getMs = sum . map getM
46 | chmodRaw : HasIO io => (fname : String) -> (p : Int) -> io (Either FileError ())
48 | = do ok <- primIO $
prim__chmod fname p
50 | then pure (Right ())
59 | chmod : HasIO io => (fname : String) -> (p : Permissions) -> io (Either FileError ())
60 | chmod fname p = chmodRaw fname (mkMode p)