summaryrefslogtreecommitdiffstats
path: root/stdlib/arg.ml
diff options
context:
space:
mode:
authorDamien Doligez <damien.doligez-inria.fr>2003-05-23 14:34:23 +0000
committerDamien Doligez <damien.doligez-inria.fr>2003-05-23 14:34:23 +0000
commit313d77d1cb4c3d9d4165984c9e43ea077f42cbab (patch)
treec3d63223f0fff0071dd0c2e451fd33f118dd216b /stdlib/arg.ml
parent176bfafcace5305c468846c6fe725e72e72b02cb (diff)
PR#1532
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@5578 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'stdlib/arg.ml')
-rw-r--r--stdlib/arg.ml15
1 files changed, 11 insertions, 4 deletions
diff --git a/stdlib/arg.ml b/stdlib/arg.ml
index 89aa5b3a8..81e94589b 100644
--- a/stdlib/arg.ml
+++ b/stdlib/arg.ml
@@ -77,11 +77,9 @@ let usage speclist errmsg =
let current = ref 0;;
-let parse_argv argv speclist anonfun errmsg =
- let initpos = !current in
+let parse_argv_internal argv speclist anonfun errmsg =
let stop error =
- let progname =
- if initpos < Array.length argv then argv.(initpos) else "(?)" in
+ let progname = if Array.length argv > 0 then argv.(0) else "(?)" in
begin match error with
| Unknown "-help" -> ()
| Unknown "--help" -> ()
@@ -178,4 +176,13 @@ let parse_argv argv speclist anonfun errmsg =
done;
;;
+let parse_argv argv speclist anonfun errmsg =
+ let save_current = !current in
+ current := 0;
+ try
+ parse_argv_internal argv speclist anonfun errmsg;
+ current := save_current;
+ with ex -> current := save_current; raise ex
+;;
+
let parse = parse_argv Sys.argv;;