libarchive 0.1.0.0 → 0.2.0.0
raw patch · 4 files changed
+17/−13 lines, 4 files
Files
- CHANGELOG.md +3/−0
- libarchive.cabal +2/−1
- src/Codec/Archive.hs +3/−4
- src/Codec/Archive/Foreign.hs +9/−8
CHANGELOG.md view
@@ -1,2 +1,5 @@ # libarchive +## 0.2.0.0++ * Fix bug in paths
libarchive.cabal view
@@ -1,11 +1,12 @@ cabal-version: 1.18 name: libarchive-version: 0.1.0.0+version: 0.2.0.0 license: BSD3 license-file: LICENSE copyright: Copyright: (c) 2018 Vanessa McHale maintainer: vanessa.mchale@iohk.io author: Vanessa McHale+bug-reports: https://github.com/vmchale/libarchive/issues synopsis: Haskell bindings for libarchive description: Partial Haskell bindings for [libarchive](https://www.libarchive.org/). Provides the ability to unpack tar archives.
src/Codec/Archive.hs view
@@ -3,13 +3,12 @@ , unpackTarball ) where -import Codec.Archive.Foreign (unpackToDir)-import qualified Data.ByteString as BS-import System.FilePath (pathSeparator)+import Codec.Archive.Foreign (unpackToDir)+import qualified Data.ByteString as BS unpackTarball :: FilePath -- ^ Filepath pointing to @.tar@ file -> FilePath -- ^ Filepath to unpack to -> IO () unpackTarball tarFp dirFp = do contents <- BS.readFile tarFp- unpackToDir (dirFp ++ [pathSeparator]) contents+ unpackToDir dirFp contents
src/Codec/Archive/Foreign.hs view
@@ -1,18 +1,19 @@ 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)+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 +unpackToDir :: FilePath -> BS.ByteString -> IO () unpackToDir fp bs = do- fp' <- newCString fp+ fp' <- newCString (fp ++ [pathSeparator]) useAsCStringLen bs $- \(charPtr, sz) -> + \(charPtr, sz) -> unpack_in_dir fp' charPtr (fromIntegral sz)