diff options
| author | Spencer Janssen <sjanssen@cse.unl.edu> | 2007-11-08 00:10:28 +0100 | 
|---|---|---|
| committer | Spencer Janssen <sjanssen@cse.unl.edu> | 2007-11-08 00:10:28 +0100 | 
| commit | fc24dc1874dcf7c9e66e21502a58b40cbe627c85 (patch) | |
| tree | e3096060f8dd59aac176b38ea57b42fe0441165b | |
| parent | 556df4664693a643bf5304f13474f80cde5a53cc (diff) | |
| download | xmobar-fc24dc1874dcf7c9e66e21502a58b40cbe627c85.tar.gz xmobar-fc24dc1874dcf7c9e66e21502a58b40cbe627c85.tar.bz2  | |
StdinReader: exit when stdin has been closed
darcs-hash:20071107231028-a5988-6787dafbed6f6c81f52989710a326e40273c2b45.gz
| -rw-r--r-- | Plugins/StdinReader.hs | 15 | 
1 files changed, 11 insertions, 4 deletions
diff --git a/Plugins/StdinReader.hs b/Plugins/StdinReader.hs index 7ad2b41..d7ec676 100644 --- a/Plugins/StdinReader.hs +++ b/Plugins/StdinReader.hs @@ -3,7 +3,7 @@  -- Module      :  Plugins.StdinReader  -- Copyright   :  (c) Andrea Rossato  -- License     :  BSD-style (see LICENSE) ---  +--  -- Maintainer  :  Andrea Rossato <andrea.rossato@unibz.it>  -- Stability   :  unstable  -- Portability :  unportable @@ -14,13 +14,20 @@  module Plugins.StdinReader where +import Prelude hiding (catch) +import System.Posix.Process +import System.Exit  import System.IO +import Control.Exception (catch)  import Plugins  data StdinReader = StdinReader      deriving (Read, Show) -instance Exec StdinReader where  +instance Exec StdinReader where      start StdinReader cb = do -        forever (hGetLine stdin >>= cb) -        where forever a = a >> forever a +        cb =<< catch (hGetLine stdin) (\e -> do hPrint stderr e; return "") +        eof <- hIsEOF stdin +        if eof +            then exitImmediately ExitSuccess +            else start StdinReader cb  | 
