diff options
author | Joey Hess <joey@kitenet.net> | 2012-07-19 00:43:36 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2012-07-19 00:46:52 -0400 |
commit | 1db7d27a451f552dbae8760e83c73b90da8114d5 (patch) | |
tree | 69beba839e2c996658133679c6aca3be40b4f9f6 /Utility/CoProcess.hs | |
parent | 549f8619998eab17aaf2122f11f036fac7e6cc40 (diff) |
add back debug logging
Make Utility.Process wrap the parts of System.Process that I use,
and add debug logging to them.
Also wrote some higher-level code that allows running an action
with handles to a processes stdin or stdout (or both), and checking
its exit status, all in a single function call.
As a bonus, the debug logging now indicates whether the process
is being run to read from it, feed it data, chat with it (writing and
reading), or just call it for its side effect.
Diffstat (limited to 'Utility/CoProcess.hs')
-rw-r--r-- | Utility/CoProcess.hs | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/Utility/CoProcess.hs b/Utility/CoProcess.hs index d3b0c46ef..67f861bb3 100644 --- a/Utility/CoProcess.hs +++ b/Utility/CoProcess.hs @@ -13,25 +13,23 @@ module Utility.CoProcess ( query ) where -import System.Process - import Common -type CoProcessHandle = (ProcessHandle, Handle, Handle, FilePath, [String]) +type CoProcessHandle = (ProcessHandle, Handle, Handle, CreateProcess) start :: FilePath -> [String] -> IO CoProcessHandle start command params = do (from, to, _err, pid) <- runInteractiveProcess command params Nothing Nothing - return (pid, to, from, command, params) + return (pid, to, from, proc command params) stop :: CoProcessHandle -> IO () -stop (pid, from, to, command, params) = do +stop (pid, from, to, p) = do hClose to hClose from - forceSuccessProcess pid command params + forceSuccessProcess p pid query :: CoProcessHandle -> (Handle -> IO a) -> (Handle -> IO b) -> IO b -query (_, from, to, _, _) send receive = do +query (_, from, to, _) send receive = do _ <- send to hFlush to receive from |