4b9b0a1b29bb9636b223d5557e4ace9d06fcb125
[ghc-base.git] / GHC / Environment.hs
1
2 module GHC.Environment (getFullArgs) where
3
4 import Prelude
5 import Foreign
6 import Foreign.C
7 import Control.Monad
8
9 getFullArgs :: IO [String]
10 getFullArgs =
11   alloca $ \ p_argc ->
12   alloca $ \ p_argv -> do
13    getFullProgArgv p_argc p_argv
14    p    <- fromIntegral `liftM` peek p_argc
15    argv <- peek p_argv
16    peekArray (p - 1) (advancePtr argv 1) >>= mapM peekCString
17
18 foreign import ccall unsafe "getFullProgArgv"
19     getFullProgArgv :: Ptr CInt -> Ptr (Ptr CString) -> IO ()
20