diff options
-rw-r--r-- | Backend.hs | 4 | ||||
-rw-r--r-- | Backend/File.hs | 16 | ||||
-rw-r--r-- | Backend/URL.hs | 4 | ||||
-rw-r--r-- | BackendTypes.hs | 5 | ||||
-rw-r--r-- | Command/Fsck.hs | 8 |
5 files changed, 20 insertions, 17 deletions
diff --git a/Backend.hs b/Backend.hs index d9bf35f0d..bdceea2f5 100644 --- a/Backend.hs +++ b/Backend.hs @@ -118,8 +118,8 @@ hasKey key = do (B.hasKey backend) key {- Checks a key's backend for problems. -} -fsckKey :: Backend Annex -> Key -> Maybe Int -> Annex Bool -fsckKey backend key numcopies = (B.fsckKey backend) key numcopies +fsckKey :: Backend Annex -> Key -> Maybe FilePath -> Maybe Int -> Annex Bool +fsckKey backend key file numcopies = (B.fsckKey backend) key file numcopies {- Looks up the key and backend corresponding to an annexed file, - by examining what the file symlinks to. -} diff --git a/Backend/File.hs b/Backend/File.hs index 10304dd91..26a6add1a 100644 --- a/Backend/File.hs +++ b/Backend/File.hs @@ -166,14 +166,14 @@ getNumCopies Nothing = do - The passed action is first run to allow backends deriving this one - to do their own checks. -} -checkKey :: (Key -> Annex Bool) -> Key -> Maybe Int -> Annex Bool -checkKey a key numcopies = do +checkKey :: (Key -> Annex Bool) -> Key -> Maybe FilePath -> Maybe Int -> Annex Bool +checkKey a key file numcopies = do a_ok <- a key - copies_ok <- checkKeyNumCopies key numcopies + copies_ok <- checkKeyNumCopies key file numcopies return $ a_ok && copies_ok -checkKeyNumCopies :: Key -> Maybe Int -> Annex Bool -checkKeyNumCopies key numcopies = do +checkKeyNumCopies :: Key -> Maybe FilePath -> Maybe Int -> Annex Bool +checkKeyNumCopies key file numcopies = do needed <- getNumCopies numcopies g <- Annex.gitRepo locations <- liftIO $ keyLocations g key @@ -184,10 +184,12 @@ checkKeyNumCopies key numcopies = do if present < needed then do ppuuids <- prettyPrintUUIDs untrustedlocations - warning $ missingNote (show key) present needed ppuuids + warning $ missingNote (filename file key) present needed ppuuids return False else return True where + filename Nothing k = show k + filename (Just f) _ = f missingNote :: String -> Int -> Int -> String -> String missingNote file 0 _ [] = @@ -203,5 +205,5 @@ missingNote file present needed [] = "\nBack it up with git-annex copy." missingNote file present needed untrusted = missingNote file present needed [] ++ - "\nThe following untrusted copies may also exist: " ++ + "\nThe following untrusted locations may also have copies: " ++ "\n" ++ untrusted diff --git a/Backend/URL.hs b/Backend/URL.hs index 45a204b07..38954e5a3 100644 --- a/Backend/URL.hs +++ b/Backend/URL.hs @@ -41,8 +41,8 @@ dummyStore _ _ = return False dummyRemove :: Key -> Maybe a -> Annex Bool dummyRemove _ _ = return False -dummyFsck :: Key -> Maybe a -> Annex Bool -dummyFsck _ _ = return True +dummyFsck :: Key -> Maybe FilePath -> Maybe a -> Annex Bool +dummyFsck _ _ _ = return True dummyOk :: Key -> Annex Bool dummyOk _ = return True diff --git a/BackendTypes.hs b/BackendTypes.hs index e4b155f98..fd4a61b98 100644 --- a/BackendTypes.hs +++ b/BackendTypes.hs @@ -31,9 +31,10 @@ data Backend a = Backend { -- checks if a backend is storing the content of a key hasKey :: Key -> a Bool, -- called during fsck to check a key - -- (second parameter may be the number of copies that there should + -- (second parameter may be the filename associated with it) + -- (third parameter may be the number of copies that there should -- be of the key) - fsckKey :: Key -> Maybe Int -> a Bool + fsckKey :: Key -> Maybe FilePath -> Maybe Int -> a Bool } instance Show (Backend a) where diff --git a/Command/Fsck.hs b/Command/Fsck.hs index fc9bd7f52..b6f330d4c 100644 --- a/Command/Fsck.hs +++ b/Command/Fsck.hs @@ -24,13 +24,13 @@ seek = [withAttrFilesInGit "annex.numcopies" start] start :: CommandStartAttrFile start (file, attr) = isAnnexed file $ \(key, backend) -> do showStart "fsck" file - return $ Just $ perform key backend numcopies + return $ Just $ perform key file backend numcopies where numcopies = readMaybe attr :: Maybe Int -perform :: Key -> Backend Annex -> Maybe Int -> CommandPerform -perform key backend numcopies = do - success <- Backend.fsckKey backend key numcopies +perform :: Key -> FilePath -> Backend Annex -> Maybe Int -> CommandPerform +perform key file backend numcopies = do + success <- Backend.fsckKey backend key (Just file) numcopies if success then return $ Just $ return True else return Nothing |