From 4dfc4d2d8415d0c3956bf4e582ea7602b0cf60b5 Mon Sep 17 00:00:00 2001 From: Ian Lynagh <igloo@earth.li> Date: Tue, 17 Jul 2007 14:19:18 +0000 Subject: [PATCH] Implement GHC.Environment.getFullArgs This returns all the arguments, including those normally eaten by the RTS (+RTS ... -RTS). This is mainly for ghc-inplace, where we need to pass /all/ the arguments on to the real ghc. e.g. ioref001(ghci) was failing because the +RTS -K32m -RTS wasn't getting passed on. --- GHC/Environment.hs | 20 ++++++++++++++++++++ base.cabal | 1 + 2 files changed, 21 insertions(+) create mode 100644 GHC/Environment.hs diff --git a/GHC/Environment.hs b/GHC/Environment.hs new file mode 100644 index 00000000..4b9b0a1b --- /dev/null +++ b/GHC/Environment.hs @@ -0,0 +1,20 @@ + +module GHC.Environment (getFullArgs) where + +import Prelude +import Foreign +import Foreign.C +import Control.Monad + +getFullArgs :: IO [String] +getFullArgs = + alloca $ \ p_argc -> + alloca $ \ p_argv -> do + getFullProgArgv p_argc p_argv + p <- fromIntegral `liftM` peek p_argc + argv <- peek p_argv + peekArray (p - 1) (advancePtr argv 1) >>= mapM peekCString + +foreign import ccall unsafe "getFullProgArgv" + getFullProgArgv :: Ptr CInt -> Ptr (Ptr CString) -> IO () + diff --git a/base.cabal b/base.cabal index 600ab03d..0d791304 100644 --- a/base.cabal +++ b/base.cabal @@ -106,6 +106,7 @@ exposed-modules: GHC.ConsoleHandler, GHC.Dotnet, GHC.Enum, + GHC.Environment, GHC.Err, GHC.Exception, GHC.Exts, -- GitLab