@@ -21,11 +21,9 @@ import Control.Monad.State.Strict hiding (get, put)
2121import qualified Control.Monad.State.Strict as ST
2222import System.FilePath
2323import System.Directory
24−import Codec.Compression.Zlib
24+import Codec.Compression.Zlib (compress)
25+import Util.Zlib (decompressEither)
2526
26−import Debug.Trace
27−
28−import Paths_idris
2927
3028ibcVersion :: Word8
3129ibcVersion = 54
@@ -74,9 +72,15 @@ loadIBC fp = do iLOG $ "Loading ibc " ++ fp
7472 ibcf <- runIO $ (bdecode fp :: IO IBCFile)
7573 process ibcf fp
7674
75+bencode :: Binary a => FilePath -> a -> IO ()
7776bencode f d = B.writeFile f (compress (encode d))
77+
78+bdecode :: Binary b => FilePath -> IO b
7879bdecode f = do d' <- B.readFile f
79− return (decode (decompress d'))
80+ either
81+ (\(_, e) -> error $ "Invalid / corrupted zip format on " ++ show f ++ ": " ++ e)
82+ (return . decode)
83+ (decompressEither d')
8084
8185writeIBC :: FilePath -> FilePath -> Idris ()
8286writeIBC src f