lojban-0.1: Utils.hs
module Utils
(list
,run
,trim)
where
import System.Process
import System.IO
import System.Exit
import qualified System.IO.Strict as StrictIO
list :: Eq a => b -> ([a] -> b) -> [a] -> b
list nil cons v = if v == [] then nil else cons v
run :: String -> String -> IO (Either String (String,String))
run cmd input = do
Right (inp,out,err,pid) <- catch (Right `fmap` runInteractiveCommand cmd)
(const $ return $ Left "Broken pipe")
catch (do hPutStr inp input; hClose inp
output <- StrictIO.hGetContents out
errput <- StrictIO.hGetContents err
e <- catch (waitForProcess pid)
(const $ return ExitSuccess)
return $ Right (errput,output))
(const $ return $ Left "Broken pipe")
trim :: String -> String
trim = unwords . words