[project @ 1998-12-02 13:17:09 by simonm]
[ghc-hetmet.git] / ghc / compiler / utils / Argv.lhs
1 %
2 % (c) The AQUA Project, Glasgow University, 1996-1998
3 %
4 \section[Argv]{@Argv@: direct (non-standard) access to command-line arguments}
5
6 \begin{code}
7 module Argv ( argv ) where
8
9 #include "HsVersions.h"
10
11 import FastString
12
13 #if __GLASGOW_HASKELL__ <= 302
14 import GlaExts          ( Addr )
15 import ByteArray        ( indexAddrOffAddr )
16 #else
17 import Addr             ( Addr, indexAddrOffAddr )
18 #endif
19
20 argv :: [FAST_STRING]
21 argv = unpackArgv ``prog_argv'' (``prog_argc''::Int)
22
23 unpackArgv :: Addr -> Int -> [FAST_STRING] -- argv[1 .. argc-1]
24
25 unpackArgv argv argc = unpack 1
26   where
27     unpack :: Int -> [FAST_STRING]
28     unpack n
29       | n >= argc = []
30       | otherwise =
31          case (indexAddrOffAddr argv n) of 
32            item -> mkFastCharString item : unpack (n + 1)
33
34 \end{code}