diff options
Diffstat (limited to 'driver')
-rw-r--r-- | driver/Commandline.ml | 17 | ||||
-rw-r--r-- | driver/Commandline.mli | 5 |
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 +*) |