[PATCH 3/6 v5] revision.c: args starting with "-" might be a revision
- From
Siddharth Kannan <kannan.siddharth12@gmail.com>
- Date
- Feb 25, 2017, 07:24 UTC
- Message-ID
- <1488007487-12965-4-git-send-email-kannan.siddharth12@gmail.com>
- In-Reply-To
- <1488007487-12965-1-git-send-email-kannan.siddharth12@gmail.com>
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 <kannan.siddharth12@gmail.com> --- 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