diff options
author | Joey Hess <joeyh@joeyh.name> | 2017-06-26 12:15:27 -0400 |
---|---|---|
committer | Joey Hess <joeyh@joeyh.name> | 2017-06-26 12:15:55 -0400 |
commit | 63f9aba33b45e5bab688ffaa5e4182801c152828 (patch) | |
tree | 1f4e16640503b27bbd0f33241cbe1cb2c4a4eb89 /Utility/Process.hs | |
parent | c799b05deae723690bfac5e867f7985e8f800d0d (diff) | |
download | git-repair-63f9aba33b45e5bab688ffaa5e4182801c152828.tar.gz |
merge from git-annex
Removes dependency on MissingH, adding a dependency on split instead.
This commit was sponsored by Brock Spratlen on Patreon.
Diffstat (limited to 'Utility/Process.hs')
-rw-r--r-- | Utility/Process.hs | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/Utility/Process.hs b/Utility/Process.hs index ed02f49..6d981cb 100644 --- a/Utility/Process.hs +++ b/Utility/Process.hs @@ -174,22 +174,21 @@ createBackgroundProcess p a = a =<< createProcess p -- returns a transcript combining its stdout and stderr, and -- whether it succeeded or failed. processTranscript :: String -> [String] -> (Maybe String) -> IO (String, Bool) -processTranscript = processTranscript' id +processTranscript cmd opts = processTranscript' (proc cmd opts) -processTranscript' :: (CreateProcess -> CreateProcess) -> String -> [String] -> Maybe String -> IO (String, Bool) -processTranscript' modproc cmd opts input = do +processTranscript' :: CreateProcess -> Maybe String -> IO (String, Bool) +processTranscript' cp input = do #ifndef mingw32_HOST_OS {- This implementation interleves stdout and stderr in exactly the order - the process writes them. -} (readf, writef) <- System.Posix.IO.createPipe readh <- System.Posix.IO.fdToHandle readf writeh <- System.Posix.IO.fdToHandle writef - p@(_, _, _, pid) <- createProcess $ modproc $ - (proc cmd opts) - { std_in = if isJust input then CreatePipe else Inherit - , std_out = UseHandle writeh - , std_err = UseHandle writeh - } + p@(_, _, _, pid) <- createProcess $ cp + { std_in = if isJust input then CreatePipe else Inherit + , std_out = UseHandle writeh + , std_err = UseHandle writeh + } hClose writeh get <- mkreader readh @@ -200,12 +199,11 @@ processTranscript' modproc cmd opts input = do return (transcript, ok) #else {- This implementation for Windows puts stderr after stdout. -} - p@(_, _, _, pid) <- createProcess $ modproc $ - (proc cmd opts) - { std_in = if isJust input then CreatePipe else Inherit - , std_out = CreatePipe - , std_err = CreatePipe - } + p@(_, _, _, pid) <- createProcess $ cp + { std_in = if isJust input then CreatePipe else Inherit + , std_out = CreatePipe + , std_err = CreatePipe + } getout <- mkreader (stdoutHandle p) geterr <- mkreader (stderrHandle p) |