X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Flib%2Fstd%2FPrelHandle.lhs;h=52d66821e42e39fd1ac5c640aa114ca435e31cd5;hb=7c8fd9ea9e8d5b6e419aa8f0cd71463cba187524;hp=337184f2e26e8317bc9b226d137fd1ec5991dc11;hpb=d8e3e531a15c3d6f4dcbc91a5a9f27824c66d8f4;p=ghc-hetmet.git diff --git a/ghc/lib/std/PrelHandle.lhs b/ghc/lib/std/PrelHandle.lhs index 337184f..52d6682 100644 --- a/ghc/lib/std/PrelHandle.lhs +++ b/ghc/lib/std/PrelHandle.lhs @@ -242,16 +242,7 @@ stdout = unsafePerformIO (do (bm, bf_size) <- getBMode__ fo mkBuffer__ fo bf_size #endif - hdl <- newHandle (Handle__ fo WriteHandle bm "stdout") - -- when stdin and stdout are both connected to a terminal, ensure - -- that anything buffered on stdout is flushed prior to reading from stdin. - -- - hConnectTerms hdl stdin - -- when stderr and stdout are both connected to a terminal, ensure - -- that anything buffered on stdout is flushed prior to writing to - -- stderr. - hConnectTo hdl stderr - return hdl + newHandle (Handle__ fo WriteHandle bm "stdout") _ -> do ioError <- constructError "stdout" newHandle (mkErrorHandle__ ioError) ) @@ -277,7 +268,12 @@ stdin = unsafePerformIO (do #endif (bm, bf_size) <- getBMode__ fo mkBuffer__ fo bf_size - newHandle (Handle__ fo ReadHandle bm "stdin") + hdl <- newHandle (Handle__ fo ReadHandle bm "stdin") + -- when stdin and stdout are both connected to a terminal, ensure + -- that anything buffered on stdout is flushed prior to reading from stdin. + -- + hConnectTerms stdout hdl + return hdl _ -> do ioError <- constructError "stdin" newHandle (mkErrorHandle__ ioError) ) @@ -302,7 +298,12 @@ stderr = unsafePerformIO (do fo <- makeForeignObj fo addForeignFinalizer fo (freeStdFileObject fo) #endif - newHandle (Handle__ fo WriteHandle NoBuffering "stderr") + hdl <- newHandle (Handle__ fo WriteHandle NoBuffering "stderr") + -- when stderr and stdout are both connected to a terminal, ensure + -- that anything buffered on stdout is flushed prior to writing to + -- stderr. + hConnectTo stdout hdl + return hdl _ -> do ioError <- constructError "stderr" newHandle (mkErrorHandle__ ioError)