aboutsummaryrefslogtreecommitdiffstats
path: root/driver
diff options
context:
space:
mode:
Diffstat (limited to 'driver')
-rw-r--r--driver/Commandline.ml17
-rw-r--r--driver/Commandline.mli5
2 files changed, 22 insertions, 0 deletions
diff --git a/driver/Commandline.ml b/driver/Commandline.ml
index c0dd6257..b544c37b 100644
--- a/driver/Commandline.ml
+++ b/driver/Commandline.ml
@@ -115,3 +115,20 @@ let parse_cmdline spec =
with Responsefile.Error s ->
eprintf "%s" s;
exit 2
+
+let long_int_action key s =
+ let ls = String.length s
+ and lkey = String.length key in
+ assert (ls > lkey);
+ let s = String.sub s (lkey + 1) (ls - lkey - 1) in
+ try
+ int_of_string s
+ with Failure _ ->
+ eprintf "Argument to option `%s' must be an integer\n" key;
+ exit 2
+
+let longopt_int key f =
+ let act s =
+ let n = long_int_action key s in
+ f n in
+ Prefix (key ^ "="),Self act
diff --git a/driver/Commandline.mli b/driver/Commandline.mli
index 197d0b04..65253749 100644
--- a/driver/Commandline.mli
+++ b/driver/Commandline.mli
@@ -40,3 +40,8 @@ val parse_cmdline: (pattern * action) list -> unit
(* Note on precedence: [Exact] patterns are tried first, then the other
patterns are tried in the order in which they appear in the list. *)
+
+val longopt_int: string -> (int -> unit) -> pattern * action
+(** [longopt_int key fn] generates a pattern and an action for
+ options of the form [key=<n>] and calls [fn] with the integer argument
+*)