2 % (c) The AQUA Project, Glasgow University, 1996
4 \section[Argv]{@Argv@: direct (non-standard) access to command-line arguments}
7 #include "HsVersions.h"
9 module Argv ( argv ) where
11 #if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ <= 200
12 import PreludeGlaST ( indexAddrOffAddr )
15 CHK_Ubiq() -- debugging consistency check
18 #if __GLASGOW_HASKELL__ == 201
19 # define ADDR GHCbase.Addr
20 # define PACK_STR packCString
21 #elif __GLASGOW_HASKELL__ >= 202
22 # define ADDR GlaExts.Addr
23 # define PACK_STR mkFastCharString
26 # define PACK_STR mkFastCharString
29 # define PACK_STR _packCString
34 argv = unpackArgv ``prog_argv'' (``prog_argc''::Int)
36 unpackArgv :: ADDR -> Int -> [FAST_STRING] -- argv[1 .. argc-1]
38 unpackArgv argv argc = unpack 1
40 unpack :: Int -> [FAST_STRING]
43 then ([] :: [FAST_STRING])
44 else case (indexAddrOffAddr argv n) of { item ->
45 PACK_STR item : unpack (n + 1)