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/Arch.hs | 15 ++++---------- src/GF/System/Readline.hs | 51 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 11 deletions(-) create mode 100644 src/GF/System/Readline.hs (limited to 'src/GF/System') diff --git a/src/GF/System/Arch.hs b/src/GF/System/Arch.hs index d9f3e855c..c0dac3644 100644 --- a/src/GF/System/Arch.hs +++ b/src/GF/System/Arch.hs @@ -5,9 +5,9 @@ -- Stability : (stable) -- Portability : (portable) -- --- > CVS $Date: 2005/04/21 16:46:14 $ +-- > CVS $Date: 2005/05/10 14:55:01 $ -- > CVS $Author: bringert $ --- > CVS $Revision: 1.7 $ +-- > CVS $Revision: 1.8 $ -- -- architecture\/compiler dependent definitions for unix\/hbc ----------------------------------------------------------------------------- @@ -21,7 +21,8 @@ import System.Random import System.CPUTime import Control.Monad (filterM) import System.Directory -import System.Console.Readline + +import GF.System.Readline (fetchCommand) ---- import qualified UnicodeF as U --(fudlogueWrite) @@ -44,14 +45,6 @@ prCPU cpu = do welcomeArch :: String welcomeArch = "This is the system compiled with ghc." -fetchCommand :: String -> IO (String) -fetchCommand s = do - res <- readline s - case res of - Nothing -> return "q" - Just s -> do addHistory s - return s - -- | selects the one with the later modification time of two selectLater :: FilePath -> FilePath -> IO FilePath selectLater x y = do 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