From dfccee26168d1ecca34dc504812f24a23b7633ed Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 20 Jun 2012 12:57:00 -0400 Subject: unused: Fix crash when file names contain invalid utf8. Was decoding the git-cat-file of the symlink target as utf8, but that can't do, unix filenames are from the 70's and need this shiny disco fileSystemEncoding. --- Command/Unused.hs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'Command') diff --git a/Command/Unused.hs b/Command/Unused.hs index 03a709534..b115eee83 100644 --- a/Command/Unused.hs +++ b/Command/Unused.hs @@ -10,8 +10,7 @@ module Command.Unused where import qualified Data.Set as S -import qualified Data.Text.Lazy as L -import qualified Data.Text.Lazy.Encoding as L +import qualified Data.ByteString.Lazy as L import Data.BloomFilter import Data.BloomFilter.Easy import Data.BloomFilter.Hash @@ -265,8 +264,9 @@ withKeysReferencedInGitRef a ref = do go [] = noop go (l:ls) | isSymLink (LsTree.mode l) = do - content <- L.decodeUtf8 <$> catFile ref (LsTree.file l) - case fileKey (takeFileName $ L.unpack content) of + content <- encodeW8 . L.unpack + <$> catFile ref (LsTree.file l) + case fileKey (takeFileName content) of Nothing -> go ls Just k -> do a k -- cgit v1.2.3