From 193df1747da0e3a899269d53f165c21df0bab836 Mon Sep 17 00:00:00 2001
From: Hristo Venev <hristo@venev.name>
Date: Thu, 6 Feb 2020 15:03:05 +0100
Subject: Simplify argument parsing.

---
 src/main.rs | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/src/main.rs b/src/main.rs
index 9d93116..cbc532b 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -169,6 +169,10 @@ Usage:
     1
 }
 
+fn run_usage(argv0: &str, _: Vec<OsString>) -> i32 {
+    usage(argv0)
+}
+
 fn maybe_get_var(out: &mut Option<impl From<OsString>>, var: impl AsRef<OsStr>) {
     let var = var.as_ref();
     if let Some(s) = env::var_os(var) {
@@ -301,25 +305,26 @@ fn main() {
 
     let mut args = Vec::new();
     let mut run: for<'a> fn(&'a str, Vec<OsString>) -> i32 = run_with_file;
-    let mut parse_args = true;
-    for arg in iter_args {
-        if !parse_args || !arg.to_string_lossy().starts_with('-') {
+    for arg in &mut iter_args {
+        if !arg.to_string_lossy().starts_with('-') {
             args.push(arg);
         } else if arg == "--" {
-            parse_args = false;
+            break;
         } else if arg == "-h" || arg == "--help" {
             run = help;
             break;
         } else if arg == "--check-source" {
             run = run_check_source;
-            parse_args = false;
+            break;
         } else if arg == "--cmdline" {
             run = run_with_cmdline;
-            parse_args = false;
+            break;
         } else {
-            usage(&argv0);
+            run = run_usage;
+            break;
         }
     }
+    args.extend(iter_args);
 
     process::exit(run(&argv0, args));
 }
-- 
cgit