[project @ 1998-02-03 17:13:54 by simonm]
[ghc-hetmet.git] / ghc / compiler / utils / Argv.lhs
1 %
2 % (c) The AQUA Project, Glasgow University, 1996
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 import GlaExts          ( Addr )
14 import ByteArray        ( indexAddrOffAddr )
15
16 argv :: [FAST_STRING]
17 argv = unpackArgv ``prog_argv'' (``prog_argc''::Int)
18
19 unpackArgv :: Addr -> Int -> [FAST_STRING] -- argv[1 .. argc-1]
20
21 unpackArgv argv argc = unpack 1
22   where
23     unpack :: Int -> [FAST_STRING]
24     unpack n
25       = if (n >= argc)
26         then ([] :: [FAST_STRING])
27         else case (indexAddrOffAddr argv n) of { item ->
28              mkFastCharString item : unpack (n + 1)
29              }
30 \end{code}