From 9f0eba77e889ceeaeb2711ffcd18b1f73ec1b97e Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 10 Nov 2012 00:02:55 -0400 Subject: fix exit code propigation --- Assistant/XMPP/Git.hs | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) (limited to 'Assistant/XMPP') diff --git a/Assistant/XMPP/Git.hs b/Assistant/XMPP/Git.hs index b2d645fad..fcdb5dc2d 100644 --- a/Assistant/XMPP/Git.hs +++ b/Assistant/XMPP/Git.hs @@ -163,19 +163,14 @@ relayHandle var = do - we're talking to git-push on stdout - git-receive-pack is talking to us on relayIn (via XMPP) - we're talking to git-receive-pack on relayOut (via XMPP) + - git-receive-pack's exit code will be passed to us on relayControl -} xmppGitRelay :: IO () xmppGitRelay = do flip relay stdout =<< relayHandle relayIn relay stdin =<< relayHandle relayOut - - controlh <- relayHandle relayControl - s <- hGetLine controlh - exitWith $ case readish s of - Just n - | n == 0 -> ExitSuccess - | otherwise -> ExitFailure n - Nothing -> ExitFailure 1 + code <- hGetLine =<< relayHandle relayControl + exitWith $ fromMaybe (ExitFailure 1) $ readish code where {- Is it possible to set up pipes and not need to copy the data - ourselves? See splice(2) -} -- cgit v1.2.3