{-# LINE 1 "Magic/Init.hsc" #-}
module Magic.Init(magicOpen, magicLoad, magicLoadDefault)
where
import Foreign.Ptr
import Foreign.C.String
import Magic.Types
import Foreign.C.Types
import Magic.Utils
import Magic.TypesLL
import Foreign.Marshal.Utils
magicOpen :: [MagicFlag] -> IO Magic
magicOpen :: [MagicFlag] -> IO Magic
magicOpen [MagicFlag]
mfl =
String -> IO (Ptr CMagic) -> IO Magic
fromMagicPtr String
"magicOpen" (CInt -> IO (Ptr CMagic)
magic_open CInt
flags)
where flags :: CInt
flags = [MagicFlag] -> CInt
flaglist2int [MagicFlag]
mfl
magicLoadDefault :: Magic -> IO ()
magicLoadDefault :: Magic -> IO ()
magicLoadDefault Magic
m = Magic -> (Ptr CMagic -> IO ()) -> IO ()
forall a. Magic -> (Ptr CMagic -> IO a) -> IO a
withMagicPtr Magic
m (\Ptr CMagic
cmagic ->
String -> Magic -> IO CInt -> IO ()
checkIntError String
"magicLoadDefault" Magic
m (IO CInt -> IO ()) -> IO CInt -> IO ()
forall a b. (a -> b) -> a -> b
$ Ptr CMagic -> CString -> IO CInt
magic_load Ptr CMagic
cmagic CString
forall a. Ptr a
nullPtr)
magicLoad :: Magic -> String -> IO ()
magicLoad :: Magic -> String -> IO ()
magicLoad Magic
m String
s = Magic -> (Ptr CMagic -> IO ()) -> IO ()
forall a. Magic -> (Ptr CMagic -> IO a) -> IO a
withMagicPtr Magic
m (\Ptr CMagic
cmagic ->
String -> (CString -> IO ()) -> IO ()
forall a. String -> (CString -> IO a) -> IO a
withCString String
s (\CString
cs ->
String -> Magic -> IO CInt -> IO ()
checkIntError String
"magicLoad" Magic
m (IO CInt -> IO ()) -> IO CInt -> IO ()
forall a b. (a -> b) -> a -> b
$ Ptr CMagic -> CString -> IO CInt
magic_load Ptr CMagic
cmagic CString
cs))
foreign import ccall unsafe "magic.h magic_open"
magic_open :: CInt -> IO (Ptr CMagic)
foreign import ccall unsafe "magic.h magic_load"
magic_load :: Ptr CMagic -> CString -> IO CInt