hstar-0.1.0.5: src/Compression/Lrzip.hs
module Compression.Lrzip ( decompress
) where
import qualified Data.ByteString as BS
import qualified Data.ByteString.Lazy as BSL
import System.IO (hSetBinaryMode)
import System.IO.Unsafe (unsafePerformIO)
import System.Process (CreateProcess, StdStream (CreatePipe, Inherit), createProcess, proc, std_err, std_in, std_out)
decompress :: BS.ByteString -> BSL.ByteString
decompress = unsafePerformIO . decompressIO
bsProc :: CreateProcess -> BS.ByteString -> IO BSL.ByteString
bsProc p bs = do
(Just stdin, Just stdout, _, _) <- createProcess p { std_in = CreatePipe, std_out = CreatePipe }
BS.hPut stdin bs
hSetBinaryMode stdout True
BSL.hGetContents stdout
decompressIO :: BS.ByteString -> IO BSL.ByteString
decompressIO = bsProc ((proc "lrzip" ["-d", "-q"]) { std_err = Inherit })