Hi Everyone,
I am strugling to get the following code to work correctly and I'm hoping
someone will be able to shed some light as to why the code is behaving
as it does:
{-| runs the supplied command and args as a SHELL command -}
runShell :: String -> IO (String, ExitCode)
runShell shellCmd = do
(_, Just hOut, Just hErr, hProcess) <- createProcess (shell shellCmd) {
std_out = CreatePipe, std_err = CreatePipe }
exitCode <- waitForProcess hProcess
outTxt <- hGetContents hOut
errTxt <- hGetContents hErr
return $ (outTxt ++ errTxt, exitCode)
If I try to su the runShell function with the following command, it simply
blocks forever:
git --no-pager blame <your git file here>
but if I do:
git status
The runShell function works as expected. Can someone shed some light on why
the 'git blame' command blocks? Interrestingly enough, if I remove the
waitForProcess action, the 'git blame' command starts working as expected, but
I no longer have my blocking behaviour, waiting for the command to finish and
return the ExitCode.
Regards
Rouan
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe