{-# LINE 1 "src/Archive/Tar.cpphs" #-} # 1 "src/Archive/Tar.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-tar-bytestring-1.0.0.0/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-tar-bytestring-1.0.0.0/build/autogen/cabal_macros.h" # 24 "/home/vanessa/programming/haskell/current/archive-backpack/dist-newstyle/build/x86_64-linux/ghc-8.8.3/archive-tar-bytestring-1.0.0.0/build/autogen/cabal_macros.h" # 35 "/home/vanessa/programming/haskell/current/archive-backpack/dist-newstyle/build/x86_64-linux/ghc-8.8.3/archive-tar-bytestring-1.0.0.0/build/autogen/cabal_macros.h" # 46 "/home/vanessa/programming/haskell/current/archive-backpack/dist-newstyle/build/x86_64-linux/ghc-8.8.3/archive-tar-bytestring-1.0.0.0/build/autogen/cabal_macros.h" # 57 "/home/vanessa/programming/haskell/current/archive-backpack/dist-newstyle/build/x86_64-linux/ghc-8.8.3/archive-tar-bytestring-1.0.0.0/build/autogen/cabal_macros.h" # 68 "/home/vanessa/programming/haskell/current/archive-backpack/dist-newstyle/build/x86_64-linux/ghc-8.8.3/archive-tar-bytestring-1.0.0.0/build/autogen/cabal_macros.h" # 79 "/home/vanessa/programming/haskell/current/archive-backpack/dist-newstyle/build/x86_64-linux/ghc-8.8.3/archive-tar-bytestring-1.0.0.0/build/autogen/cabal_macros.h" # 90 "/home/vanessa/programming/haskell/current/archive-backpack/dist-newstyle/build/x86_64-linux/ghc-8.8.3/archive-tar-bytestring-1.0.0.0/build/autogen/cabal_macros.h" # 101 "/home/vanessa/programming/haskell/current/archive-backpack/dist-newstyle/build/x86_64-linux/ghc-8.8.3/archive-tar-bytestring-1.0.0.0/build/autogen/cabal_macros.h" # 112 "/home/vanessa/programming/haskell/current/archive-backpack/dist-newstyle/build/x86_64-linux/ghc-8.8.3/archive-tar-bytestring-1.0.0.0/build/autogen/cabal_macros.h" # 123 "/home/vanessa/programming/haskell/current/archive-backpack/dist-newstyle/build/x86_64-linux/ghc-8.8.3/archive-tar-bytestring-1.0.0.0/build/autogen/cabal_macros.h" # 134 "/home/vanessa/programming/haskell/current/archive-backpack/dist-newstyle/build/x86_64-linux/ghc-8.8.3/archive-tar-bytestring-1.0.0.0/build/autogen/cabal_macros.h" # 145 "/home/vanessa/programming/haskell/current/archive-backpack/dist-newstyle/build/x86_64-linux/ghc-8.8.3/archive-tar-bytestring-1.0.0.0/build/autogen/cabal_macros.h" # 156 "/home/vanessa/programming/haskell/current/archive-backpack/dist-newstyle/build/x86_64-linux/ghc-8.8.3/archive-tar-bytestring-1.0.0.0/build/autogen/cabal_macros.h" # 167 "/home/vanessa/programming/haskell/current/archive-backpack/dist-newstyle/build/x86_64-linux/ghc-8.8.3/archive-tar-bytestring-1.0.0.0/build/autogen/cabal_macros.h" # 178 "/home/vanessa/programming/haskell/current/archive-backpack/dist-newstyle/build/x86_64-linux/ghc-8.8.3/archive-tar-bytestring-1.0.0.0/build/autogen/cabal_macros.h" # 189 "/home/vanessa/programming/haskell/current/archive-backpack/dist-newstyle/build/x86_64-linux/ghc-8.8.3/archive-tar-bytestring-1.0.0.0/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/Tar.cpphs" {-# LANGUAGE OverloadedStrings #-} module Archive.Tar ( Entry , Error , FP , writeArchiveBytes , unpackToDirRaw , readArchiveBytes , packFilesRaw , versionInfo , toFP ) where import Codec.Archive.Tar (Entries (..)) import qualified Codec.Archive.Tar as Tar import Control.Composition ((.@)) import qualified Data.ByteString.Lazy as BSL import qualified Data.Text as T import Data.Text.Encoding (encodeUtf8) import qualified Data.Version as V import qualified Paths_archive_tar_bytestring as P import System.Posix.ByteString.FilePath (RawFilePath) type Entry = Tar.Entry type Error = Tar.FormatError type FP = RawFilePath toFP :: FilePath -> FP toFP = encodeUtf8 . T.pack coerceToList :: Entries a -> Either a [Entry] coerceToList (Next e es) = (e :) <$> coerceToList es coerceToList Done = Right [] coerceToList (Fail ex) = Left ex writeArchiveBytes :: [Entry] -> BSL.ByteString writeArchiveBytes = Tar.write readArchiveBytes :: BSL.ByteString -> Either Error [Entry] readArchiveBytes = coerceToList . Tar.read unpackToDirRaw :: FP -> BSL.ByteString -> IO () unpackToDirRaw = Tar.read .@ Tar.unpack packFilesRaw :: [FP] -> IO BSL.ByteString packFilesRaw = fmap Tar.write . Tar.pack "." versionInfo :: String versionInfo = "tar-bytestring: " ++ "0.6.3.1" ++ "\narchive-tar-bytestring: " ++ V.showVersion P.version