From 8f9b501515d215ac2befab51773b63bf0f180d5d Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 16 Feb 2012 02:05:06 -0400 Subject: [PATCH] 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. --- Backend/URL.hs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Backend/URL.hs b/Backend/URL.hs index b3411bac5b..b98974cb45 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)