From: sof Date: Thu, 20 Oct 2005 00:52:38 +0000 (+0000) Subject: [project @ 2005-10-20 00:52:38 by sof] X-Git-Tag: Initial_conversion_from_CVS_complete~158 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=c86b512d648e23eed323451d5e2998947a9e68b4;hp=3d8a086764395544acbfc522e46eab082a0079c0;p=ghc-hetmet.git [project @ 2005-10-20 00:52:38 by sof] [mingw]delay flushing console buffer until last possible moment. Merge to STABLE --- 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