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)