[PATCH 3/6 v5] revision.c: args starting with "-" might be a revision
From: Siddharth Kannan <hidden>
Date: 2017-02-25 07:25:23
Subsystem:
the rest · Maintainer:
Linus Torvalds
From: Siddharth Kannan <hidden>
Date: 2017-02-25 07:25:23
Subsystem:
the rest · Maintainer:
Linus Torvalds
setup_revisions used to consider any argument starting with "-" to be either a valid or an unknown option. Teach setup_revisions to check if an argument is a revision before adding it as an unknown option (something that setup_revisions didn't understand) to argv, and moving on to the next argument. This patch prepares the addition of "-" as a shorthand for "previous branch". Signed-off-by: Siddharth Kannan <redacted> --- revision.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/revision.c b/revision.c
index 8d4ddae..5470c33 100644
--- a/revision.c
+++ b/revision.c@@ -2203,6 +2203,7 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, struct s read_from_stdin = 0; for (left = i = 1; i < argc; i++) { const char *arg = argv[i]; + int maybe_opt = 0; if (*arg == '-') { int opts;
@@ -2232,15 +2233,17 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, struct s } if (opts < 0) exit(128); - /* arg is an unknown option */ - argv[left++] = arg; - continue; + maybe_opt = 1; } if (!handle_revision_arg(arg, revs, flags, revarg_opt)) got_rev_arg = 1; - else { + else if (maybe_opt) { + /* arg is an unknown option */ + argv[left++] = arg; + continue; + } else { int j; if (seen_dashdash || *arg == '^') die("bad revision '%s'", arg);
--
2.1.4