summaryrefslogtreecommitdiff
path: root/driver
diff options
context:
space:
mode:
authorGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2013-02-12 10:08:22 +0000
committerGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2013-02-12 10:08:22 +0000
commitde89f0892f6abc59e017727dc8072b7b70cd8e71 (patch)
treed2df2ecf6cc32b183faef5ea2e1acc28e15d69e8 /driver
parentccac82c79b5a19ded67b2381c48e3e73ddd5449b (diff)
Be more like gcc in the way we display or not the usage message.
git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@2112 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'driver')
-rw-r--r--driver/Driver.ml14
1 files changed, 6 insertions, 8 deletions
diff --git a/driver/Driver.ml b/driver/Driver.ml
index 6c00cb7..e0ed27f 100644
--- a/driver/Driver.ml
+++ b/driver/Driver.ml
@@ -318,17 +318,15 @@ let rec find_action s = function
let parse_cmdline spec usage =
let acts = List.map (fun (pat, act) -> (Str.regexp pat, act)) spec in
- let error () =
- eprintf "%s" usage;
- exit 2 in
let rec parse i =
if i < Array.length Sys.argv then begin
let s = Sys.argv.(i) in
match find_action s acts with
| None ->
if s <> "-help" && s <> "--help"
- then eprintf "Unknown argument `%s'\n" s;
- error ()
+ then eprintf "Unknown argument `%s'\n" s
+ else printf "%s" usage;
+ exit 2
| Some(Set r) ->
r := true; parse (i+1)
| Some(Unset r) ->
@@ -339,7 +337,7 @@ let parse_cmdline spec usage =
if i + 1 < Array.length Sys.argv then begin
fn Sys.argv.(i+1); parse (i+2)
end else begin
- eprintf "Option `%s' expects an argument\n" s; error()
+ eprintf "Option `%s' expects an argument\n" s; exit 2
end
| Some(Integer fn) ->
if i + 1 < Array.length Sys.argv then begin
@@ -348,11 +346,11 @@ let parse_cmdline spec usage =
int_of_string Sys.argv.(i+1)
with Failure _ ->
eprintf "Argument to option `%s' must be an integer\n" s;
- error()
+ exit 2
in
fn n; parse (i+2)
end else begin
- eprintf "Option `%s' expects an argument\n" s; error()
+ eprintf "Option `%s' expects an argument\n" s; exit 2
end
end
in parse 1