[project @ 2002-07-26 12:12:33 by stolz]
[ghc-base.git] / System / Environment.hs
index 20b709f..4e9efb6 100644 (file)
 
 module System.Environment
     ( 
-    , getArgs      -- :: IO [String]
+      getArgs      -- :: IO [String]
     , getProgName   -- :: IO String
     , getEnv        -- :: String -> IO String
   ) where
 
 import Prelude
 
+#ifndef __HUGS__
 import Foreign
 import Foreign.C
 import Control.Monad
+#endif
 
 #ifdef __GLASGOW_HASKELL__
 import GHC.IOBase
 #endif
 
+#ifdef __HUGS__
+import Hugs.System
+#endif
+
 -- ---------------------------------------------------------------------------
 -- getArgs, getProgName, getEnv
 
 -- Computation `getArgs' returns a list of the program's command
 -- line arguments (not including the program name).
 
+#ifndef __HUGS__
 getArgs :: IO [String]
 getArgs = 
   alloca $ \ p_argc ->  
@@ -48,9 +55,16 @@ getArgs =
 foreign import ccall unsafe "getProgArgv"
   getProgArgv :: Ptr CInt -> Ptr (Ptr CString) -> IO ()
 
--- Computation `getProgName' returns the name of the program
--- as it was invoked.
+{-|
+Computation 'getProgName' returns the name of the program as it was
+invoked.
 
+However, this is hard-to-impossible to implement on some non-Unix
+OSes, so instead, for maximum portability, we just return the leafname
+of the program as invoked. Even then there are some differences
+between platforms: on Windows, for example, a program invoked as foo
+is probably really @FOO.EXE@, and that is what 'getProgName' will return.
+-}
 getProgName :: IO String
 getProgName = 
   alloca $ \ p_argc ->
@@ -97,3 +111,4 @@ getEnv name =
 
 foreign import ccall unsafe "getenv"
    c_getenv :: CString -> IO (Ptr CChar)
+#endif  /* __HUGS__ */