packages feed

libarchive-0.1.0.0: src/Codec/Archive/Foreign.hs

module Codec.Archive.Foreign ( unpackToDir
                             ) where
import Foreign.Ptr
import Foreign.C.String
import Foreign.C.Types
import Data.ByteString as BS
import Data.Word (Word)

foreign import ccall unsafe unpack_in_dir :: CString -> Ptr CChar -> Word -> IO ()

unpackToDir :: FilePath 
            -> BS.ByteString
            -> IO ()
unpackToDir fp bs = do
    fp' <- newCString fp
    useAsCStringLen bs $
        \(charPtr, sz) -> 
            unpack_in_dir fp' charPtr (fromIntegral sz)