summaryrefslogtreecommitdiffstats
path: root/stdlib
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib')
-rw-r--r--stdlib/arg.ml12
-rw-r--r--stdlib/arg.mli5
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