{-# LINE 1 "src/Archive/FFI.cpphs" #-}
# 1 "src/Archive/FFI.cpphs"
# 1 "<built-in>"
# 1 "<command-line>"
# 12 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4

# 17 "/usr/include/stdc-predef.h" 3 4














































# 12 "<command-line>" 2
# 1 "/home/vanessa/programming/haskell/current/archive-backpack/dist-newstyle/build/x86_64-linux/ghc-8.8.3/archive-libarchive-0.2.2.2/build/autogen/cabal_macros.h" 1



# 13 "/home/vanessa/programming/haskell/current/archive-backpack/dist-newstyle/build/x86_64-linux/ghc-8.8.3/archive-libarchive-0.2.2.2/build/autogen/cabal_macros.h"


# 24 "/home/vanessa/programming/haskell/current/archive-backpack/dist-newstyle/build/x86_64-linux/ghc-8.8.3/archive-libarchive-0.2.2.2/build/autogen/cabal_macros.h"


# 35 "/home/vanessa/programming/haskell/current/archive-backpack/dist-newstyle/build/x86_64-linux/ghc-8.8.3/archive-libarchive-0.2.2.2/build/autogen/cabal_macros.h"


# 46 "/home/vanessa/programming/haskell/current/archive-backpack/dist-newstyle/build/x86_64-linux/ghc-8.8.3/archive-libarchive-0.2.2.2/build/autogen/cabal_macros.h"


# 57 "/home/vanessa/programming/haskell/current/archive-backpack/dist-newstyle/build/x86_64-linux/ghc-8.8.3/archive-libarchive-0.2.2.2/build/autogen/cabal_macros.h"


# 68 "/home/vanessa/programming/haskell/current/archive-backpack/dist-newstyle/build/x86_64-linux/ghc-8.8.3/archive-libarchive-0.2.2.2/build/autogen/cabal_macros.h"


# 79 "/home/vanessa/programming/haskell/current/archive-backpack/dist-newstyle/build/x86_64-linux/ghc-8.8.3/archive-libarchive-0.2.2.2/build/autogen/cabal_macros.h"


# 90 "/home/vanessa/programming/haskell/current/archive-backpack/dist-newstyle/build/x86_64-linux/ghc-8.8.3/archive-libarchive-0.2.2.2/build/autogen/cabal_macros.h"


# 101 "/home/vanessa/programming/haskell/current/archive-backpack/dist-newstyle/build/x86_64-linux/ghc-8.8.3/archive-libarchive-0.2.2.2/build/autogen/cabal_macros.h"


# 112 "/home/vanessa/programming/haskell/current/archive-backpack/dist-newstyle/build/x86_64-linux/ghc-8.8.3/archive-libarchive-0.2.2.2/build/autogen/cabal_macros.h"


# 123 "/home/vanessa/programming/haskell/current/archive-backpack/dist-newstyle/build/x86_64-linux/ghc-8.8.3/archive-libarchive-0.2.2.2/build/autogen/cabal_macros.h"


# 134 "/home/vanessa/programming/haskell/current/archive-backpack/dist-newstyle/build/x86_64-linux/ghc-8.8.3/archive-libarchive-0.2.2.2/build/autogen/cabal_macros.h"


# 145 "/home/vanessa/programming/haskell/current/archive-backpack/dist-newstyle/build/x86_64-linux/ghc-8.8.3/archive-libarchive-0.2.2.2/build/autogen/cabal_macros.h"


# 156 "/home/vanessa/programming/haskell/current/archive-backpack/dist-newstyle/build/x86_64-linux/ghc-8.8.3/archive-libarchive-0.2.2.2/build/autogen/cabal_macros.h"


# 167 "/home/vanessa/programming/haskell/current/archive-backpack/dist-newstyle/build/x86_64-linux/ghc-8.8.3/archive-libarchive-0.2.2.2/build/autogen/cabal_macros.h"

# 12 "<command-line>" 2
# 1 "/opt/ghc/8.8.3/lib/ghc-8.8.3/include/ghcversion.h" 1















# 12 "<command-line>" 2
# 1 "src/Archive/FFI.cpphs"
module Archive.FFI ( Entry
                   , Error
                   , readArchiveBytes
                   , unpackToDir
                   , writeArchiveBytes
                   , packFiles
                   , versionInfo
                   ) where

import qualified Codec.Archive                 as FFI
import           Codec.Archive.Foreign.Archive (archiveVersionString)
import           Control.Composition           ((.*))
import           Control.Exception             (throw)
import qualified Data.ByteString.Lazy          as BSL
import qualified Data.Version                  as V
import qualified Paths_archive_libarchive      as P

type Entry = FFI.Entry

type Error = FFI.ArchiveResult

writeArchiveBytes :: [Entry] -> BSL.ByteString
writeArchiveBytes = FFI.entriesToBSL

readArchiveBytes :: BSL.ByteString -> Either Error [Entry]
readArchiveBytes = FFI.readArchiveBSL

unpackToDir :: FilePath -> BSL.ByteString -> IO ()
unpackToDir = fmap (either throw id) .* FFI.runArchiveM .* FFI.unpackToDirLazy

packFiles :: [FilePath] -> IO BSL.ByteString
packFiles = FFI.packFiles

-- | @since 0.2.2.0
versionInfo :: String
versionInfo =
       "libarchive-hs: " ++ "2.2.4.0" ++ "\n"
    ++ archiveVersionString ++ "\n"
    ++ "archive-libarchive: " ++ V.showVersion P.version