summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xGit/CatFile.hs8
-rwxr-xr-x[-rw-r--r--]Git/HashObject.hs11
2 files changed, 14 insertions, 5 deletions
diff --git a/Git/CatFile.hs b/Git/CatFile.hs
index 88011f071..c1ba11bd9 100755
--- a/Git/CatFile.hs
+++ b/Git/CatFile.hs
@@ -59,6 +59,9 @@ catObjectDetails h object = CoProcess.query h send receive
hPutStrLn to $ show object
receive from = do
fileEncoding from
+#ifdef __WINDOWS__
+ hSetNewlineMode from noNewlineTranslation
+#endif
header <- hGetLine from
case words header of
[sha, objtype, size]
@@ -73,13 +76,10 @@ catObjectDetails h object = CoProcess.query h send receive
| otherwise -> error $ "unknown response from git cat-file " ++ show (header, object)
readcontent bytes from sha = do
content <- S.hGet from bytes
-#ifdef __WINDOWS__
- eatchar '\r' from
-#endif
eatchar '\n' from
return $ Just (L.fromChunks [content], Ref sha)
dne = return Nothing
eatchar expected from = do
c <- hGetChar from
when (c /= expected) $
- error $ "missing " ++ (show c) ++ " from git cat-file"
+ error $ "missing " ++ (show expected) ++ " from git cat-file"
diff --git a/Git/HashObject.hs b/Git/HashObject.hs
index b4a32ef1c..5e153687d 100644..100755
--- a/Git/HashObject.hs
+++ b/Git/HashObject.hs
@@ -5,6 +5,8 @@
- Licensed under the GNU GPL version 3 or higher.
-}
+{-# LANGUAGE CPP #-}
+
module Git.HashObject where
import Common
@@ -32,8 +34,15 @@ hashFile h file = CoProcess.query h send receive
where
send to = do
fileEncoding to
+#ifdef __WINDOWS__
+ hSetNewlineMode to noNewlineTranslation
+#endif
hPutStrLn to file
- receive from = getSha "hash-object" $ hGetLine from
+ receive from = getSha "hash-object" $ do
+#ifdef __WINDOWS__
+ hSetNewlineMode from noNewlineTranslation
+#endif
+ hGetLine from
{- Injects some content into git, returning its Sha. -}
hashObject :: ObjectType -> String -> Repo -> IO Sha