{-# 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
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
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
..} = C.FuseConfig
{ setGid :: Signal
C.setGid = forall {a}. Num a => Bool -> a
boolToCInt Bool
setGid
, gid :: CUInt
C.gid = Word32 -> CUInt
CUInt forall a b. (a -> b) -> a -> b
$ (\(CGid Word32
x) -> Word32
x) GroupID
gid
, setUid :: Signal
C.setUid = forall {a}. Num a => Bool -> a
boolToCInt Bool
setUid
, uid :: CUInt
C.uid = Word32 -> CUInt
CUInt forall a b. (a -> b) -> a -> b
$ (\(CUid Word32
x) -> Word32
x) UserID
uid
, setMode :: Signal
C.setMode = forall {a}. Num a => Bool -> a
boolToCInt Bool
setMode
, umask :: CUInt
C.umask = Word32 -> CUInt
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 = forall {a}. Num a => Bool -> a
boolToCInt Bool
intr
, intrSignal :: Signal
C.intrSignal = Signal
intrSignal
, remember :: Signal
C.remember = forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
remember
, hardRemove :: Signal
C.hardRemove = forall {a}. Num a => Bool -> a
boolToCInt Bool
hardRemove
, useIno :: Signal
C.useIno = forall {a}. Num a => Bool -> a
boolToCInt Bool
useIno
, readdirIno :: Signal
C.readdirIno = forall {a}. Num a => Bool -> a
boolToCInt Bool
readdirIno
, directIo :: Signal
C.directIo = forall {a}. Num a => Bool -> a
boolToCInt Bool
directIo
, kernelCache :: Signal
C.kernelCache = forall {a}. Num a => Bool -> a
boolToCInt Bool
kernelCache
, autoCache :: Signal
C.autoCache = forall {a}. Num a => Bool -> a
boolToCInt Bool
autoCache
, acAttrTimeoutSet :: Signal
C.acAttrTimeoutSet = forall {a}. Num a => Bool -> a
boolToCInt Bool
acAttrTimeoutSet
, acAttrTimeout :: CDouble
C.acAttrTimeout = Double -> CDouble
CDouble Double
acAttrTimeout
, nullpathOk :: Signal
C.nullpathOk = forall {a}. Num a => Bool -> a
boolToCInt Bool
nullpathOk
}
where
boolToCInt :: Bool -> a
boolToCInt Bool
b = if Bool
b then a
1 else a
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
{ setGid :: Bool
setGid = forall {a}. (Eq a, Num a) => a -> Bool
cintToBool Signal
setGid
, gid :: GroupID
gid = Word32 -> GroupID
CGid forall a b. (a -> b) -> a -> b
$ CUInt -> Word32
unCUInt CUInt
gid
, setUid :: Bool
setUid = forall {a}. (Eq a, Num a) => a -> Bool
cintToBool Signal
setUid
, uid :: UserID
uid = Word32 -> UserID
CUid forall a b. (a -> b) -> a -> b
$ CUInt -> Word32
unCUInt CUInt
uid
, setMode :: Bool
setMode = forall {a}. (Eq a, Num a) => a -> Bool
cintToBool Signal
setMode
, umask :: FileMode
umask = Word32 -> FileMode
CMode 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 = forall {a}. (Eq a, Num a) => a -> Bool
cintToBool Signal
intr
, intrSignal :: Signal
intrSignal = Signal
intrSignal
, remember :: Int
remember = forall a b. (Integral a, Num b) => a -> b
fromIntegral forall a b. (a -> b) -> a -> b
$ Signal -> Int32
unCInt Signal
remember
, hardRemove :: Bool
hardRemove = forall {a}. (Eq a, Num a) => a -> Bool
cintToBool Signal
hardRemove
, useIno :: Bool
useIno = forall {a}. (Eq a, Num a) => a -> Bool
cintToBool Signal
useIno
, readdirIno :: Bool
readdirIno = forall {a}. (Eq a, Num a) => a -> Bool
cintToBool Signal
readdirIno
, directIo :: Bool
directIo = forall {a}. (Eq a, Num a) => a -> Bool
cintToBool Signal
directIo
, kernelCache :: Bool
kernelCache = forall {a}. (Eq a, Num a) => a -> Bool
cintToBool Signal
kernelCache
, autoCache :: Bool
autoCache = forall {a}. (Eq a, Num a) => a -> Bool
cintToBool Signal
autoCache
, acAttrTimeoutSet :: Bool
acAttrTimeoutSet = forall {a}. (Eq a, Num a) => a -> Bool
cintToBool Signal
acAttrTimeoutSet
, acAttrTimeout :: Double
acAttrTimeout = CDouble -> Double
unCDouble CDouble
acAttrTimeout
, nullpathOk :: Bool
nullpathOk = 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 forall a. Eq a => a -> a -> Bool
/= a
0