restart coprocess in raw mode
Restarting a crashing git process could result in filename encoding issues when not in a unicode locale, as the restarted processes's handles were not read in raw mode. Since rawMode is always used when starting a coprocess, didn't bother to parameterise it and just always enable it for simplicity. This commit was sponsored by Jake Vosloo on Patreon.
This commit is contained in:
parent
f08ad2f916
commit
e23028d19b
7 changed files with 21 additions and 19 deletions
|
@ -51,7 +51,7 @@ catFileStart' restartable repo = CatFileHandle
|
|||
<$> startp "--batch"
|
||||
<*> startp "--batch-check=%(objectname) %(objecttype) %(objectsize)"
|
||||
where
|
||||
startp p = CoProcess.rawMode =<< gitCoProcessStart restartable
|
||||
startp p = gitCoProcessStart restartable
|
||||
[ Param "cat-file"
|
||||
, Param p
|
||||
] repo
|
||||
|
|
|
@ -24,7 +24,7 @@ type Attr = String
|
|||
checkAttrStart :: [Attr] -> Repo -> IO CheckAttrHandle
|
||||
checkAttrStart attrs repo = do
|
||||
currdir <- getCurrentDirectory
|
||||
h <- CoProcess.rawMode =<< gitCoProcessStart True params repo
|
||||
h <- gitCoProcessStart True params repo
|
||||
oldgit <- Git.Version.older "1.7.7"
|
||||
return (h, attrs, oldgit, currdir)
|
||||
where
|
||||
|
|
|
@ -37,7 +37,7 @@ type CheckIgnoreHandle = CoProcess.CoProcessHandle
|
|||
-}
|
||||
checkIgnoreStart :: Repo -> IO (Maybe CheckIgnoreHandle)
|
||||
checkIgnoreStart repo = ifM supportedGitVersion
|
||||
( Just <$> (CoProcess.rawMode =<< gitCoProcessStart True params repo')
|
||||
( Just <$> gitCoProcessStart True params repo'
|
||||
, return Nothing
|
||||
)
|
||||
where
|
||||
|
|
|
@ -20,7 +20,7 @@ import Utility.Tmp
|
|||
type HashObjectHandle = CoProcess.CoProcessHandle
|
||||
|
||||
hashObjectStart :: Repo -> IO HashObjectHandle
|
||||
hashObjectStart = CoProcess.rawMode <=< gitCoProcessStart True
|
||||
hashObjectStart = gitCoProcessStart True
|
||||
[ Param "hash-object"
|
||||
, Param "-w"
|
||||
, Param "--stdin-paths"
|
||||
|
|
|
@ -59,7 +59,7 @@ newtype MkTreeHandle = MkTreeHandle CoProcess.CoProcessHandle
|
|||
withMkTreeHandle :: (MonadIO m, MonadMask m) => Repo -> (MkTreeHandle -> m a) -> m a
|
||||
withMkTreeHandle repo a = bracketIO setup cleanup (a . MkTreeHandle)
|
||||
where
|
||||
setup = CoProcess.rawMode =<< gitCoProcessStart False ps repo
|
||||
setup = gitCoProcessStart False ps repo
|
||||
ps = [Param "mktree", Param "--batch", Param "-z"]
|
||||
cleanup = CoProcess.stop
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue