diff options
| author | Jacques Garrigue <garrigue at math.nagoya-u.ac.jp> | 2000-02-07 03:29:29 +0000 |
|---|---|---|
| committer | Jacques Garrigue <garrigue at math.nagoya-u.ac.jp> | 2000-02-07 03:29:29 +0000 |
| commit | d518a3348590be05e13b0c23bee0f8a81715b8cf (patch) | |
| tree | d3086bc597e879077226cdbafbe74a57a127fcf6 /toplevel | |
| parent | f723d5394fc26b889966972a0c6a071be932e3b2 (diff) | |
| download | ocaml-d518a3348590be05e13b0c23bee0f8a81715b8cf.tar.gz | |
new handling of Sys.argv in scripts
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@2790 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'toplevel')
| -rw-r--r-- | toplevel/toploop.ml | 11 | ||||
| -rw-r--r-- | toplevel/toploop.mli | 3 | ||||
| -rw-r--r-- | toplevel/topmain.ml | 4 |
3 files changed, 14 insertions, 4 deletions
diff --git a/toplevel/toploop.ml b/toplevel/toploop.ml index 077303f0fc..fca2428be1 100644 --- a/toplevel/toploop.ml +++ b/toplevel/toploop.ml @@ -316,7 +316,16 @@ let loop() = (* Execute a script *) -let run_script name = +let run_script name args = + let rec find n = + if n >= Array.length args then invalid_arg "Toploop.run_script"; + if args.(n) = name then n else find (n+1) + in + let pos = find 0 in + let len = Array.length args - pos in + if Array.length Sys.argv < len then invalid_arg "Toploop.run_script"; + Array.blit args pos Sys.argv 0 len; + Obj.truncate (Obj.repr Sys.argv) len; Compile.init_path(); toplevel_env := Compile.initial_env(); Formatmsg.set_output Format.err_formatter; diff --git a/toplevel/toploop.mli b/toplevel/toploop.mli index e2ad52b5be..945065b19d 100644 --- a/toplevel/toploop.mli +++ b/toplevel/toploop.mli @@ -18,7 +18,8 @@ val loop: unit -> unit (* Read and execute a script from the given file *) -val run_script: string -> bool (* true if successful, false if error *) +val run_script: string -> string array -> bool + (* true if successful, false if error *) (* Interface with toplevel directives *) diff --git a/toplevel/topmain.ml b/toplevel/topmain.ml index acfa97a605..f7791cf50d 100644 --- a/toplevel/topmain.ml +++ b/toplevel/topmain.ml @@ -14,10 +14,10 @@ open Clflags -let usage = "Usage: ocaml <options>\noptions are:" +let usage = "Usage: ocaml <options> [script-file]\noptions are:" let file_argument name = - exit (if Toploop.run_script name then 0 else 2) + exit (if Toploop.run_script name Sys.argv then 0 else 2) let main () = Arg.parse [ |
