summaryrefslogtreecommitdiff
path: root/Limit.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Limit.hs')
-rw-r--r--Limit.hs11
1 files changed, 8 insertions, 3 deletions
diff --git a/Limit.hs b/Limit.hs
index d7f82eb84..98227144d 100644
--- a/Limit.hs
+++ b/Limit.hs
@@ -204,10 +204,15 @@ addSmallerThan = addLimit . limitSize (<)
limitSize :: (Maybe Integer -> Maybe Integer -> Bool) -> MkLimit
limitSize vs s = case readSize dataUnits s of
Nothing -> Left "bad size"
- Just sz -> Right $ const $ lookupFile >=> check sz
+ Just sz -> Right $ go sz
where
- check _ Nothing = return False
- check sz (Just (key, _)) = return $ keySize key `vs` Just sz
+ go sz _ fi = lookupFile fi >>= check fi sz
+ check _ sz (Just (key, _)) = return $ keySize key `vs` Just sz
+ check fi sz Nothing = do
+ filesize <- liftIO $ catchMaybeIO $
+ fromIntegral . fileSize
+ <$> getFileStatus (Annex.relFile fi)
+ return $ filesize `vs` Just sz
addTimeLimit :: String -> Annex ()
addTimeLimit s = do