libarchive-0.2.0.0: src/Codec/Archive/Foreign.hs
module Codec.Archive.Foreign ( unpackToDir
) where
import Data.ByteString as BS
import Data.Word (Word)
import Foreign.C.String
import Foreign.C.Types
import Foreign.Ptr
import System.FilePath (pathSeparator)
foreign import ccall unsafe unpack_in_dir :: CString -> Ptr CChar -> Word -> IO ()
unpackToDir :: FilePath
-> BS.ByteString
-> IO ()
unpackToDir fp bs = do
fp' <- newCString (fp ++ [pathSeparator])
useAsCStringLen bs $
\(charPtr, sz) ->
unpack_in_dir fp' charPtr (fromIntegral sz)