summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJohn Goerzen <jgoerzen@complete.org>2008-09-16 07:36:00 +0200
committerJohn Goerzen <jgoerzen@complete.org>2008-09-16 07:36:00 +0200
commit69cb7f23b65f42410b5463ac6b4d87985237b4eb (patch)
tree022058ca519ad0bbef9f2c8794c7731278a62a56
parentdacf87b9dfde0ae6083d4155627896638dc8741c (diff)
downloadxmobar-69cb7f23b65f42410b5463ac6b4d87985237b4eb.tar.gz
xmobar-69cb7f23b65f42410b5463ac6b4d87985237b4eb.tar.bz2
Cleaned up so that we watch the exit code
darcs-hash:20080916053600-c2a52-e068e71779dd9319a450127aeb7512350f0dcc56.gz
-rw-r--r--Plugins/CommandReader.hs15
1 files changed, 11 insertions, 4 deletions
diff --git a/Plugins/CommandReader.hs b/Plugins/CommandReader.hs
index fef8a45..eee23a6 100644
--- a/Plugins/CommandReader.hs
+++ b/Plugins/CommandReader.hs
@@ -17,7 +17,7 @@ module Plugins.CommandReader where
import System.IO
import Plugins
-import System.Process(runInteractiveCommand)
+import System.Process(runInteractiveCommand, getProcessExitCode)
data CommandReader = CommandReader String String
deriving (Read, Show)
@@ -25,8 +25,15 @@ data CommandReader = CommandReader String String
instance Exec CommandReader where
alias (CommandReader _ a) = a
start (CommandReader p _) cb = do
- (hstdin, hstdout, hstderr, _) <- runInteractiveCommand p
+ (hstdin, hstdout, hstderr, ph) <- runInteractiveCommand p
hClose hstdin
hClose hstderr
- forever (hGetLineSafe hstdout >>= cb)
- where forever a = a >> forever a
+ hSetBinaryMode hstdout False
+ hSetBuffering hstdout LineBuffering
+ forever ph (hGetLineSafe hstdout >>= cb)
+ where forever ph a =
+ do a
+ ec <- getProcessExitCode ph
+ case ec of
+ Nothing -> forever ph a
+ Just _ -> cb "EXITED"