diff options
author | 2012-02-16 02:05:06 -0400 | |
---|---|---|
committer | 2012-02-16 02:05:06 -0400 | |
commit | 8f9b501515d215ac2befab51773b63bf0f180d5d (patch) | |
tree | 6c70ecc7b25ca65a5d55c4840564d653f74cbe8d | |
parent | a1e52f0ce5984058c737ed709fc5d4b6398e019a (diff) |
handle really long urls
Using the whole url as a key can make the filename too long. Truncate
and use a md5sum for uniqueness if necessary.
-rw-r--r-- | Backend/URL.hs | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/Backend/URL.hs b/Backend/URL.hs index b3411bac5..b98974cb4 100644 --- a/Backend/URL.hs +++ b/Backend/URL.hs @@ -10,6 +10,8 @@ module Backend.URL ( fromUrl ) where +import Data.Hash.MD5 + import Common.Annex import Types.Backend import Types.Key @@ -26,7 +28,14 @@ backend = Backend { fromUrl :: String -> Maybe Integer -> Key fromUrl url size = stubKey - { keyName = url + { keyName = key , keyBackendName = "URL" , keySize = size } + where + -- when it's not too long, use the url as the key name + -- 256 is the absolute filename max, but use a shorter + -- length because this is not the entire key filename. + key + | length url < 128 = url + | otherwise = take 128 url ++ "-" ++ md5s (Str url) |