aboutsummaryrefslogtreecommitdiff
path: root/Limit.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2015-01-20 16:58:48 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2015-01-20 17:09:24 -0400
commitc7e67aa29183c7fe7bb14b909cf953a89c531b08 (patch)
treee63f341fb51375faf9a0928af00703bcef584306 /Limit.hs
parent68c8b9b7592a7c407bdd6a0fe8b5f49241118926 (diff)
add getFileSize, which can get the real size of a large file on Windows
Avoid using fileSize which maxes out at just 2 gb on Windows. Instead, use hFileSize, which doesn't have a bounded size. Fixes support for files > 2 gb on Windows. Note that the InodeCache code only needs to compare a file size, so it doesn't matter it the file size wraps. So it has been left as-is. This was necessary both to avoid invalidating existing inode caches, and because the code passed FileStatus around and would have become more expensive if it called getFileSize. This commit was sponsored by Christian Dietrich.
Diffstat (limited to 'Limit.hs')
-rw-r--r--Limit.hs4
1 files changed, 1 insertions, 3 deletions
diff --git a/Limit.hs b/Limit.hs
index 5d58e77f0..1053547ec 100644
--- a/Limit.hs
+++ b/Limit.hs
@@ -239,9 +239,7 @@ limitSize vs s = case readSize dataUnits s of
checkkey sz key = return $ keySize key `vs` Just sz
check _ sz (Just key) = checkkey sz key
check fi sz Nothing = do
- filesize <- liftIO $ catchMaybeIO $
- fromIntegral . fileSize
- <$> getFileStatus (relFile fi)
+ filesize <- liftIO $ catchMaybeIO $ getFileSize (relFile fi)
return $ filesize `vs` Just sz
addMetaData :: String -> Annex ()