diff options
| author | bringert <unknown> | 2005-05-10 13:55:01 +0000 |
|---|---|---|
| committer | bringert <unknown> | 2005-05-10 13:55:01 +0000 |
| commit | 2fa6b60d0449b49fd9eaa75c72d07f10d45c9837 (patch) | |
| tree | 31c7061458cee4be4243bba5f39145f66ab622de /src/GF/System/Readline.hs | |
| parent | 41657fed460ddc959db9d2a4c6000c77b5c82f3c (diff) | |
Added option to disable readline.
Diffstat (limited to 'src/GF/System/Readline.hs')
| -rw-r--r-- | src/GF/System/Readline.hs | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/GF/System/Readline.hs b/src/GF/System/Readline.hs new file mode 100644 index 000000000..588b277d0 --- /dev/null +++ b/src/GF/System/Readline.hs @@ -0,0 +1,51 @@ +{-# OPTIONS -cpp #-} + +---------------------------------------------------------------------- +-- | +-- Module : GF.System.Readline +-- Maintainer : BB +-- Stability : (stable) +-- Portability : (portable) +-- +-- > CVS $Date: 2005/05/10 14:55:01 $ +-- > CVS $Author: bringert $ +-- > CVS $Revision: 1.1 $ +-- +-- Uses the right readline library to read user input. +----------------------------------------------------------------------------- + +module GF.System.Readline (fetchCommand) where + +#ifdef USE_READLINE + +import System.Console.Readline (readline, addHistory) + +#else + +import System.IO.Error (try) +import System.IO (stdout,hFlush) + +#endif + +#ifdef USE_READLINE + +fetchCommand :: String -> IO (String) +fetchCommand s = do + res <- readline s + case res of + Nothing -> return "q" + Just s -> do addHistory s + return s + +#else + +fetchCommand :: String -> IO (String) +fetchCommand s = do + putStr s + hFlush stdout + res <- try getLine + case res of + Left e -> return "q" + Right l -> return l + +#endif |
