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