From c86b512d648e23eed323451d5e2998947a9e68b4 Mon Sep 17 00:00:00 2001 From: sof Date: Thu, 20 Oct 2005 00:52:38 +0000 Subject: [PATCH] [project @ 2005-10-20 00:52:38 by sof] [mingw]delay flushing console buffer until last possible moment. Merge to STABLE --- ghc/compiler/ghci/InteractiveUI.hs | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/ghc/compiler/ghci/InteractiveUI.hs b/ghc/compiler/ghci/InteractiveUI.hs index 7cd720c..67c68d3 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 = "", 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 -- 1.7.10.4