diff options
Diffstat (limited to 'stdlib')
-rw-r--r-- | stdlib/arg.ml | 12 | ||||
-rw-r--r-- | stdlib/arg.mli | 5 |
2 files changed, 6 insertions, 11 deletions
diff --git a/stdlib/arg.ml b/stdlib/arg.ml index 81e94589b..86c8255f5 100644 --- a/stdlib/arg.ml +++ b/stdlib/arg.ml @@ -77,7 +77,7 @@ let usage speclist errmsg = let current = ref 0;; -let parse_argv_internal argv speclist anonfun errmsg = +let parse_argv argv speclist anonfun errmsg = let stop error = let progname = if Array.length argv > 0 then argv.(0) else "(?)" in begin match error with @@ -176,13 +176,7 @@ let parse_argv_internal argv speclist anonfun errmsg = done; ;; -let parse_argv argv speclist anonfun errmsg = - let save_current = !current in +let parse = current := 0; - try - parse_argv_internal argv speclist anonfun errmsg; - current := save_current; - with ex -> current := save_current; raise ex + parse_argv Sys.argv; ;; - -let parse = parse_argv Sys.argv;; diff --git a/stdlib/arg.mli b/stdlib/arg.mli index ffb3ed180..58d71e161 100644 --- a/stdlib/arg.mli +++ b/stdlib/arg.mli @@ -97,8 +97,9 @@ val parse : val parse_argv : string array -> (key * spec * doc) list -> anon_fun -> usage_msg -> unit (** [Arg.parse_argv args speclist anon_fun usage_msg] parses the array - [args] as if it were the command line. It saves the value of - [Arg.current] before starting and restores it before returning. *) + [args] as if it were the command line. It uses and updates the + value of [Arg.current]. You must set [Arg.current] before calling + [parse_argv], and restore it afterward if needed. *) exception Bad of string (** Functions in [spec] or [anon_fun] can raise [Arg.Bad] with an error |