From 2fa6b60d0449b49fd9eaa75c72d07f10d45c9837 Mon Sep 17 00:00:00 2001 From: bringert Date: Tue, 10 May 2005 13:55:01 +0000 Subject: Added option to disable readline. --- src/GF/System/Readline.hs | 51 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/GF/System/Readline.hs (limited to 'src/GF/System/Readline.hs') 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 -- cgit v1.2.3