content: {-# LANGUAGE Trustworthy #-}
  
  -----------------------------------------------------------------------------
  -- |
  -- Module      :  GHC.Internal.GHCi.Helpers
  -- Copyright   :  (c) The GHC Developers
  -- License     :  see libraries/base/LICENSE
  --
  -- Maintainer  :  ghc-devs@haskell.org
  -- Stability   :  internal
  -- Portability :  non-portable (GHC Extensions)
  --
  -- Various helpers used by the GHCi shell.
  --
  -- /The API of this module is unstable and not meant to be consumed by the general public./
  -- If you absolutely must depend on it, make sure to use a tight upper
  -- bound, e.g., @base < 4.X@ rather than @base < 5@, because the interface can
  -- change rapidly without much warning.
  --
  -----------------------------------------------------------------------------
  
  module GHC.Internal.GHCi.Helpers
    ( disableBuffering, flushAll
    , evalWrapper
    ) where
  
  import GHC.Internal.Base
  import GHC.Internal.System.IO
  import GHC.Internal.System.Environment
  
  disableBuffering :: IO ()
  disableBuffering = do
    hSetBuffering stdin NoBuffering
    hSetBuffering stdout NoBuffering
    hSetBuffering stderr NoBuffering
  
  flushAll :: IO ()
  flushAll = do
    hFlush stdout
    hFlush stderr
  
  evalWrapper :: String -> [String] -> IO a -> IO a
  evalWrapper progName args m =
    withProgName progName (withArgs args m)
  