module Codec.Archive
( unpackToDir
, unpackArchive
) where
import Codec.Archive.Foreign
import Data.ByteString (useAsCStringLen)
import qualified Data.ByteString as BS
import Foreign.C.String
import System.FilePath (pathSeparator)
unpackArchive :: FilePath
-> FilePath
-> IO ()
unpackArchive tarFp dirFp = do
fp' <- newCString tarFp
dir' <- newCString (dirFp ++ [pathSeparator])
unpack_from_file dir' fp'
unpackToDir :: FilePath
-> BS.ByteString
-> IO ()
unpackToDir fp bs = do
fp' <- newCString (fp ++ [pathSeparator])
useAsCStringLen bs $
\(charPtr, sz) ->
unpack_in_dir fp' charPtr (fromIntegral sz)