diff options
| author | sof <unknown> | 2005-10-20 00:52:38 +0000 |
|---|---|---|
| committer | sof <unknown> | 2005-10-20 00:52:38 +0000 |
| commit | c86b512d648e23eed323451d5e2998947a9e68b4 (patch) | |
| tree | 266ea6d68392bb28fb3d0a1ed555d3b662ee73a6 | |
| parent | 3d8a086764395544acbfc522e46eab082a0079c0 (diff) | |
| download | haskell-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.hs | 23 |
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 |
