SHAnE backends are now smarter about composite extensions, such as .tar.gz Closes: #680450

This commit is contained in:
Joey Hess 2012-07-05 16:24:02 -06:00
parent 25701717eb
commit 5a753a7b8a
2 changed files with 11 additions and 8 deletions

View file

@ -97,16 +97,17 @@ keyValueE :: SHASize -> KeySource -> Annex (Maybe Key)
keyValueE size source = keyValue size source >>= maybe (return Nothing) addE
where
addE k = return $ Just $ k
{ keyName = keyName k ++ extension
{ keyName = keyName k ++ selectExtension (keyFilename source)
, keyBackendName = shaNameE size
}
naiveextension = takeExtension $ keyFilename source
extension
-- long or newline containing extensions are
-- probably not really an extension
| length naiveextension > 6 ||
'\n' `elem` naiveextension = ""
| otherwise = naiveextension
selectExtension :: FilePath -> String
selectExtension = join "." . reverse . take 2 . takeWhile shortenough .
reverse . split "." . takeExtensions
where
shortenough e
| '\n' `elem` e = False -- newline in extension?!
| otherwise = length e <= 4 -- long enough for "jpeg"
{- A key's checksum is checked during fsck. -}
checkKeyChecksum :: SHASize -> Key -> FilePath -> Annex Bool