diff options
author | Reto Hablützel <rethab@rethab.ch> | 2014-08-09 21:33:10 +0200 |
---|---|---|
committer | jao <jao@gnu.org> | 2014-08-09 23:18:46 +0200 |
commit | d9b24473ce65c6ce7f5bdea8c7d6eee07a62461e (patch) | |
tree | f748cd2c2f4df5753955a660044cf28a8737cb16 /src/Plugins/PipeReader.hs | |
parent | 35054d018c79d4b4da2dd93830dc351d28635242 (diff) | |
download | xmobar-d9b24473ce65c6ce7f5bdea8c7d6eee07a62461e.tar.gz xmobar-d9b24473ce65c6ce7f5bdea8c7d6eee07a62461e.tar.bz2 |
hlint refactorings
Diffstat (limited to 'src/Plugins/PipeReader.hs')
-rw-r--r-- | src/Plugins/PipeReader.hs | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/src/Plugins/PipeReader.hs b/src/Plugins/PipeReader.hs index 7efea60..058ed46 100644 --- a/src/Plugins/PipeReader.hs +++ b/src/Plugins/PipeReader.hs @@ -19,7 +19,7 @@ import Plugins import System.Posix.Files import Control.Concurrent(threadDelay) import Control.Exception -import Control.Monad(when) +import Control.Monad(forever, unless) data PipeReader = PipeReader String String deriving (Read, Show) @@ -28,21 +28,18 @@ instance Exec PipeReader where alias (PipeReader _ a) = a start (PipeReader p _) cb = do let (def, pipe) = split ':' p - when (not $ null def) (cb def) + unless (null def) (cb def) checkPipe pipe h <- openFile pipe ReadWriteMode forever (hGetLineSafe h >>= cb) where - forever a = a >> forever a - split c xs | c `elem` xs = let (pre, post) = span ((/=) c) xs - in (pre, dropWhile ((==) c) post) + split c xs | c `elem` xs = let (pre, post) = span (c /=) xs + in (pre, dropWhile (c ==) post) | otherwise = ([], xs) checkPipe :: FilePath -> IO () -checkPipe file = do +checkPipe file = handle (\(SomeException _) -> waitForPipe) $ do - status <- getFileStatus file - if isNamedPipe status - then return () - else waitForPipe + status <- getFileStatus file + unless (isNamedPipe status) waitForPipe where waitForPipe = threadDelay 1000 >> checkPipe file |