--- /dev/null
+
+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 ()
+