diff options
author | Joey Hess <joey@kitenet.net> | 2013-11-18 13:06:58 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2013-11-18 13:06:58 -0400 |
commit | 471aa27bf0a0e4c698303acb7fdf9cea6a75634b (patch) | |
tree | 8934b0b32c315922f00cb82d772df885301a2582 /Git/Filename.hs | |
download | git-repair-471aa27bf0a0e4c698303acb7fdf9cea6a75634b.tar.gz |
copied from git-annex
Diffstat (limited to 'Git/Filename.hs')
-rw-r--r-- | Git/Filename.hs | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/Git/Filename.hs b/Git/Filename.hs new file mode 100644 index 0000000..5e076d3 --- /dev/null +++ b/Git/Filename.hs @@ -0,0 +1,28 @@ +{- Some git commands output encoded filenames, in a rather annoyingly complex + - C-style encoding. + - + - Copyright 2010, 2011 Joey Hess <joey@kitenet.net> + - + - Licensed under the GNU GPL version 3 or higher. + -} + +module Git.Filename where + +import Utility.Format (decode_c, encode_c) + +import Common + +decode :: String -> FilePath +decode [] = [] +decode f@(c:s) + -- encoded strings will be inside double quotes + | c == '"' && end s == ['"'] = decode_c $ beginning s + | otherwise = f + +{- Should not need to use this, except for testing decode. -} +encode :: FilePath -> String +encode s = "\"" ++ encode_c s ++ "\"" + +{- for quickcheck -} +prop_idempotent_deencode :: String -> Bool +prop_idempotent_deencode s = s == decode (encode s) |