summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsof <unknown>2005-10-20 00:52:38 +0000
committersof <unknown>2005-10-20 00:52:38 +0000
commitc86b512d648e23eed323451d5e2998947a9e68b4 (patch)
tree266ea6d68392bb28fb3d0a1ed555d3b662ee73a6
parent3d8a086764395544acbfc522e46eab082a0079c0 (diff)
downloadhaskell-c86b512d648e23eed323451d5e2998947a9e68b4.tar.gz
[project @ 2005-10-20 00:52:38 by sof]
[mingw]delay flushing console buffer until last possible moment. Merge to STABLE
-rw-r--r--ghc/compiler/ghci/InteractiveUI.hs23
1 files changed, 12 insertions, 11 deletions
diff --git a/ghc/compiler/ghci/InteractiveUI.hs b/ghc/compiler/ghci/InteractiveUI.hs
index 7cd720cd39..67c68d3b16 100644
--- a/ghc/compiler/ghci/InteractiveUI.hs
+++ b/ghc/compiler/ghci/InteractiveUI.hs
@@ -196,17 +196,6 @@ interactiveUI session srcs maybe_expr = do
Readline.initialize
#endif
-#if defined(mingw32_HOST_OS)
- -- The win32 Console API mutates the first character of
- -- type-ahead when reading from it in a non-buffered manner. Work
- -- around this by flushing the input buffer of type-ahead characters,
- -- but only if stdin is available.
- flushed <- IO.try (GHC.ConsoleHandler.flushConsole stdin)
- case flushed of
- Left err | isDoesNotExistError err -> return ()
- | otherwise -> ioError err
- Right () -> return ()
-#endif
startGHCi (runGHCi srcs maybe_expr)
GHCiState{ progname = "<interactive>",
args = [],
@@ -269,6 +258,18 @@ runGHCi paths maybe_expr = do
case maybe_expr of
Nothing ->
+#if defined(mingw32_HOST_OS)
+ do
+ -- The win32 Console API mutates the first character of
+ -- type-ahead when reading from it in a non-buffered manner. Work
+ -- around this by flushing the input buffer of type-ahead characters,
+ -- but only if stdin is available.
+ flushed <- io (IO.try (GHC.ConsoleHandler.flushConsole stdin))
+ case flushed of
+ Left err | isDoesNotExistError err -> return ()
+ | otherwise -> io (ioError err)
+ Right () -> return ()
+#endif
-- enter the interactive loop
interactiveLoop is_tty show_prompt
Just expr -> do