summaryrefslogtreecommitdiff
path: root/src/GF
diff options
context:
space:
mode:
Diffstat (limited to 'src/GF')
-rw-r--r--src/GF/System/Arch.hs15
-rw-r--r--src/GF/System/Readline.hs51
2 files changed, 55 insertions, 11 deletions
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