| --- hashed-storage-0.5.9-orig/Storage/Hashed/Tree.hs 2011-10-09 07:47:55.000000000 +1100 |
| +++ hashed-storage-0.5.9/Storage/Hashed/Tree.hs 2012-09-15 00:38:24.233669282 +1000 |
| @@ -41,6 +41,7 @@ |
| import Data.List( union, sort ) |
| import Control.Monad( filterM, liftM ) |
| import Control.Applicative( (<$>) ) |
| +import qualified Control.Exception ( catch, IOException ) |
| |
| -------------------------------- |
| -- Tree, Blob and friends |
| @@ -195,7 +196,7 @@ |
| let |
| subtree (name, sub) = |
| do let here = path `appendPath` name |
| - sub' <- (Just <$> unstub sub) `catch` \_ -> return Nothing |
| + sub' <- (Just <$> unstub sub) `Control.Exception.catch` \(_ :: Control.Exception.IOException) -> return Nothing |
| case sub' of |
| Nothing -> return $ Left [(here, treeHash t_, Nothing)] |
| Just sub -> do |
| @@ -204,10 +205,10 @@ |
| Left problems -> Left problems |
| Right tree -> Right (name, SubTree tree) |
| badBlob (_, f@(File (Blob s h))) = |
| - fmap (/= h) (hashFunc f `catch` (\_ -> return NoHash)) |
| + fmap (/= h) (hashFunc f `Control.Exception.catch` (\(_ :: Control.Exception.IOException) -> return NoHash)) |
| badBlob _ = return False |
| render (name, f@(File (Blob _ h))) = do |
| - h' <- (Just <$> hashFunc f) `catch` \_ -> return Nothing |
| + h' <- (Just <$> hashFunc f) `Control.Exception.catch` \(_ :: Control.Exception.IOException) -> return Nothing |
| return (path `appendPath` name, h, h') |
| subs <- mapM subtree [ x | x@(_, item) <- listImmediate t_, isSub item ] |
| badBlobs <- filterM badBlob (listImmediate t) >>= mapM render |
| --- hashed-storage-0.5.9-orig/Storage/Hashed/Darcs.hs 2011-10-09 07:47:55.000000000 +1100 |
| +++ hashed-storage-0.5.9/Storage/Hashed/Darcs.hs 2012-09-15 00:40:02.693038029 +1000 |
| @@ -1,4 +1,4 @@ |
| -{-# LANGUAGE BangPatterns #-} |
| +{-# LANGUAGE BangPatterns, ScopedTypeVariables #-} |
| |
| -- | A few darcs-specific utility functions. These are used for reading and |
| -- writing darcs and darcs-compatible hashed trees. |
| @@ -10,6 +10,7 @@ |
| import System.Directory( doesFileExist ) |
| import Codec.Compression.GZip( decompress, compress ) |
| import Control.Applicative( (<$>) ) |
| +import qualified Control.Exception ( catch, IOException ) |
| |
| import qualified Data.ByteString.Char8 as BS8 |
| import qualified Data.ByteString.Lazy.Char8 as BL8 |
| @@ -290,7 +291,7 @@ |
| |
| darcsPristineRefs :: FileSegment -> IO [Hash] |
| darcsPristineRefs fs = do |
| - con <- (darcsParseDir <$> readSegment fs) `catch` \_ -> return [] |
| + con <- (darcsParseDir <$> readSegment fs) `Control.Exception.catch` \(_ :: Control.Exception.IOException) -> return [] |
| return $! [ hash | (_, _, _, hash) <- con, valid hash ] |
| where valid NoHash = False |
| valid _ = True |