{-# LANGUAGE RecordWildCards #-}
module System.LibFuse3.FuseConfig where
import Foreign.C (CDouble(CDouble), CInt(CInt), CUInt(CUInt))
import System.Posix.Signals (Signal)
import System.Posix.Types (CGid(CGid), CMode(CMode), CUid(CUid), FileMode, GroupID, UserID)
import qualified System.LibFuse3.Internal.C as C
data FuseConfig = FuseConfig
{
FuseConfig -> Bool
setGid :: Bool
,
FuseConfig -> GroupID
gid :: GroupID
,
FuseConfig -> Bool
setUid :: Bool
,
FuseConfig -> UserID
uid :: UserID
,
FuseConfig -> Bool
setMode :: Bool
,
FuseConfig -> FileMode
umask :: FileMode
,
FuseConfig -> Double
entryTimeout :: Double
,
FuseConfig -> Double
negativeTimeout :: Double
,
FuseConfig -> Double
attrTimeout :: Double
,
FuseConfig -> Bool
intr :: Bool
,
FuseConfig -> Signal
intrSignal :: Signal
,
FuseConfig -> Int
remember :: Int
,
FuseConfig -> Bool
hardRemove :: Bool
,
FuseConfig -> Bool
useIno :: Bool
,
FuseConfig -> Bool
readdirIno :: Bool
,
FuseConfig -> Bool
directIo :: Bool
,
FuseConfig -> Bool
kernelCache :: Bool
,
FuseConfig -> Bool
autoCache :: Bool
,
FuseConfig -> Bool
acAttrTimeoutSet :: Bool
,
FuseConfig -> Double
acAttrTimeout :: Double
,
FuseConfig -> Bool
nullpathOk :: Bool
}
deriving (FuseConfig -> FuseConfig -> Bool
(FuseConfig -> FuseConfig -> Bool)
-> (FuseConfig -> FuseConfig -> Bool) -> Eq FuseConfig
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: FuseConfig -> FuseConfig -> Bool
$c/= :: FuseConfig -> FuseConfig -> Bool
== :: FuseConfig -> FuseConfig -> Bool
$c== :: FuseConfig -> FuseConfig -> Bool
Eq, Int -> FuseConfig -> ShowS
[FuseConfig] -> ShowS
FuseConfig -> String
(Int -> FuseConfig -> ShowS)
-> (FuseConfig -> String)
-> ([FuseConfig] -> ShowS)
-> Show FuseConfig
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [FuseConfig] -> ShowS
$cshowList :: [FuseConfig] -> ShowS
show :: FuseConfig -> String
$cshow :: FuseConfig -> String
showsPrec :: Int -> FuseConfig -> ShowS
$cshowsPrec :: Int -> FuseConfig -> ShowS
Show)
toCFuseConfig :: FuseConfig -> C.FuseConfig
toCFuseConfig :: FuseConfig -> FuseConfig
toCFuseConfig FuseConfig{Bool
Double
Int
UserID
FileMode
GroupID
Signal
nullpathOk :: Bool
acAttrTimeout :: Double
acAttrTimeoutSet :: Bool
autoCache :: Bool
kernelCache :: Bool
directIo :: Bool
readdirIno :: Bool
useIno :: Bool
hardRemove :: Bool
remember :: Int
intrSignal :: Signal
intr :: Bool
attrTimeout :: Double
negativeTimeout :: Double
entryTimeout :: Double
umask :: FileMode
setMode :: Bool
uid :: UserID
setUid :: Bool
gid :: GroupID
setGid :: Bool
nullpathOk :: FuseConfig -> Bool
acAttrTimeout :: FuseConfig -> Double
acAttrTimeoutSet :: FuseConfig -> Bool
autoCache :: FuseConfig -> Bool
kernelCache :: FuseConfig -> Bool
directIo :: FuseConfig -> Bool
readdirIno :: FuseConfig -> Bool
useIno :: FuseConfig -> Bool
hardRemove :: FuseConfig -> Bool
remember :: FuseConfig -> Int
intrSignal :: FuseConfig -> Signal
intr :: FuseConfig -> Bool
attrTimeout :: FuseConfig -> Double
negativeTimeout :: FuseConfig -> Double
entryTimeout :: FuseConfig -> Double
umask :: FuseConfig -> FileMode
setMode :: FuseConfig -> Bool
uid :: FuseConfig -> UserID
setUid :: FuseConfig -> Bool
gid :: FuseConfig -> GroupID
setGid :: FuseConfig -> Bool
..} = FuseConfig :: Signal
-> CUInt
-> Signal
-> CUInt
-> Signal
-> CUInt
-> CDouble
-> CDouble
-> CDouble
-> Signal
-> Signal
-> Signal
-> Signal
-> Signal
-> Signal
-> Signal
-> Signal
-> Signal
-> Signal
-> CDouble
-> Signal
-> FuseConfig
C.FuseConfig
{ setGid :: Signal
C.setGid = Bool -> Signal
forall {p}. Num p => Bool -> p
boolToCInt Bool
setGid
, gid :: CUInt
C.gid = Word32 -> CUInt
CUInt (Word32 -> CUInt) -> Word32 -> CUInt
forall a b. (a -> b) -> a -> b
$ (\(CGid Word32
x) -> Word32
x) GroupID
gid
, setUid :: Signal
C.setUid = Bool -> Signal
forall {p}. Num p => Bool -> p
boolToCInt Bool
setUid
, uid :: CUInt
C.uid = Word32 -> CUInt
CUInt (Word32 -> CUInt) -> Word32 -> CUInt
forall a b. (a -> b) -> a -> b
$ (\(CUid Word32
x) -> Word32
x) UserID
uid
, setMode :: Signal
C.setMode = Bool -> Signal
forall {p}. Num p => Bool -> p
boolToCInt Bool
setMode
, umask :: CUInt
C.umask = Word32 -> CUInt
CUInt (Word32 -> CUInt) -> Word32 -> CUInt
forall a b. (a -> b) -> a -> b
$ (\(CMode Word32
x) -> Word32
x) FileMode
umask
, entryTimeout :: CDouble
C.entryTimeout = Double -> CDouble
CDouble Double
entryTimeout
, negativeTimeout :: CDouble
C.negativeTimeout = Double -> CDouble
CDouble Double
negativeTimeout
, attrTimeout :: CDouble
C.attrTimeout = Double -> CDouble
CDouble Double
attrTimeout
, intr :: Signal
C.intr = Bool -> Signal
forall {p}. Num p => Bool -> p
boolToCInt Bool
intr
, intrSignal :: Signal
C.intrSignal = Signal
intrSignal
, remember :: Signal
C.remember = Int -> Signal
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
remember
, hardRemove :: Signal
C.hardRemove = Bool -> Signal
forall {p}. Num p => Bool -> p
boolToCInt Bool
hardRemove
, useIno :: Signal
C.useIno = Bool -> Signal
forall {p}. Num p => Bool -> p
boolToCInt Bool
useIno
, readdirIno :: Signal
C.readdirIno = Bool -> Signal
forall {p}. Num p => Bool -> p
boolToCInt Bool
readdirIno
, directIo :: Signal
C.directIo = Bool -> Signal
forall {p}. Num p => Bool -> p
boolToCInt Bool
directIo
, kernelCache :: Signal
C.kernelCache = Bool -> Signal
forall {p}. Num p => Bool -> p
boolToCInt Bool
kernelCache
, autoCache :: Signal
C.autoCache = Bool -> Signal
forall {p}. Num p => Bool -> p
boolToCInt Bool
autoCache
, acAttrTimeoutSet :: Signal
C.acAttrTimeoutSet = Bool -> Signal
forall {p}. Num p => Bool -> p
boolToCInt Bool
acAttrTimeoutSet
, acAttrTimeout :: CDouble
C.acAttrTimeout = Double -> CDouble
CDouble Double
acAttrTimeout
, nullpathOk :: Signal
C.nullpathOk = Bool -> Signal
forall {p}. Num p => Bool -> p
boolToCInt Bool
nullpathOk
}
where
boolToCInt :: Bool -> p
boolToCInt Bool
b = if Bool
b then p
1 else p
0
fromCFuseConfig :: C.FuseConfig -> FuseConfig
fromCFuseConfig :: FuseConfig -> FuseConfig
fromCFuseConfig C.FuseConfig{CUInt
Signal
CDouble
nullpathOk :: Signal
acAttrTimeout :: CDouble
acAttrTimeoutSet :: Signal
autoCache :: Signal
kernelCache :: Signal
directIo :: Signal
readdirIno :: Signal
useIno :: Signal
hardRemove :: Signal
remember :: Signal
intrSignal :: Signal
intr :: Signal
attrTimeout :: CDouble
negativeTimeout :: CDouble
entryTimeout :: CDouble
umask :: CUInt
setMode :: Signal
uid :: CUInt
setUid :: Signal
gid :: CUInt
setGid :: Signal
nullpathOk :: FuseConfig -> Signal
acAttrTimeout :: FuseConfig -> CDouble
acAttrTimeoutSet :: FuseConfig -> Signal
autoCache :: FuseConfig -> Signal
kernelCache :: FuseConfig -> Signal
directIo :: FuseConfig -> Signal
readdirIno :: FuseConfig -> Signal
useIno :: FuseConfig -> Signal
hardRemove :: FuseConfig -> Signal
remember :: FuseConfig -> Signal
intrSignal :: FuseConfig -> Signal
intr :: FuseConfig -> Signal
attrTimeout :: FuseConfig -> CDouble
negativeTimeout :: FuseConfig -> CDouble
entryTimeout :: FuseConfig -> CDouble
umask :: FuseConfig -> CUInt
setMode :: FuseConfig -> Signal
uid :: FuseConfig -> CUInt
setUid :: FuseConfig -> Signal
gid :: FuseConfig -> CUInt
setGid :: FuseConfig -> Signal
..} = FuseConfig :: Bool
-> GroupID
-> Bool
-> UserID
-> Bool
-> FileMode
-> Double
-> Double
-> Double
-> Bool
-> Signal
-> Int
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Double
-> Bool
-> FuseConfig
FuseConfig
{ setGid :: Bool
setGid = Signal -> Bool
forall {a}. (Eq a, Num a) => a -> Bool
cintToBool Signal
setGid
, gid :: GroupID
gid = Word32 -> GroupID
CGid (Word32 -> GroupID) -> Word32 -> GroupID
forall a b. (a -> b) -> a -> b
$ CUInt -> Word32
unCUInt CUInt
gid
, setUid :: Bool
setUid = Signal -> Bool
forall {a}. (Eq a, Num a) => a -> Bool
cintToBool Signal
setUid
, uid :: UserID
uid = Word32 -> UserID
CUid (Word32 -> UserID) -> Word32 -> UserID
forall a b. (a -> b) -> a -> b
$ CUInt -> Word32
unCUInt CUInt
uid
, setMode :: Bool
setMode = Signal -> Bool
forall {a}. (Eq a, Num a) => a -> Bool
cintToBool Signal
setMode
, umask :: FileMode
umask = Word32 -> FileMode
CMode (Word32 -> FileMode) -> Word32 -> FileMode
forall a b. (a -> b) -> a -> b
$ CUInt -> Word32
unCUInt CUInt
umask
, entryTimeout :: Double
entryTimeout = CDouble -> Double
unCDouble CDouble
entryTimeout
, negativeTimeout :: Double
negativeTimeout = CDouble -> Double
unCDouble CDouble
negativeTimeout
, attrTimeout :: Double
attrTimeout = CDouble -> Double
unCDouble CDouble
attrTimeout
, intr :: Bool
intr = Signal -> Bool
forall {a}. (Eq a, Num a) => a -> Bool
cintToBool Signal
intr
, intrSignal :: Signal
intrSignal = Signal
intrSignal
, remember :: Int
remember = Int32 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int32 -> Int) -> Int32 -> Int
forall a b. (a -> b) -> a -> b
$ Signal -> Int32
unCInt Signal
remember
, hardRemove :: Bool
hardRemove = Signal -> Bool
forall {a}. (Eq a, Num a) => a -> Bool
cintToBool Signal
hardRemove
, useIno :: Bool
useIno = Signal -> Bool
forall {a}. (Eq a, Num a) => a -> Bool
cintToBool Signal
useIno
, readdirIno :: Bool
readdirIno = Signal -> Bool
forall {a}. (Eq a, Num a) => a -> Bool
cintToBool Signal
readdirIno
, directIo :: Bool
directIo = Signal -> Bool
forall {a}. (Eq a, Num a) => a -> Bool
cintToBool Signal
directIo
, kernelCache :: Bool
kernelCache = Signal -> Bool
forall {a}. (Eq a, Num a) => a -> Bool
cintToBool Signal
kernelCache
, autoCache :: Bool
autoCache = Signal -> Bool
forall {a}. (Eq a, Num a) => a -> Bool
cintToBool Signal
autoCache
, acAttrTimeoutSet :: Bool
acAttrTimeoutSet = Signal -> Bool
forall {a}. (Eq a, Num a) => a -> Bool
cintToBool Signal
acAttrTimeoutSet
, acAttrTimeout :: Double
acAttrTimeout = CDouble -> Double
unCDouble CDouble
acAttrTimeout
, nullpathOk :: Bool
nullpathOk = Signal -> Bool
forall {a}. (Eq a, Num a) => a -> Bool
cintToBool Signal
nullpathOk
}
where
unCDouble :: CDouble -> Double
unCDouble (CDouble Double
x) = Double
x
unCInt :: Signal -> Int32
unCInt (CInt Int32
x) = Int32
x
unCUInt :: CUInt -> Word32
unCUInt (CUInt Word32
x) = Word32
x
cintToBool :: a -> Bool
cintToBool a
x = a
x a -> a -> Bool
forall a. Eq a => a -> a -> Bool
/= a
0