[PATCH 1/6 v5] revision.c: do not update argv with unknown option
- From
Siddharth Kannan <kannan.siddharth12@gmail.com>
- Date
- Feb 25, 2017, 07:32 UTC
- Message-ID
- <1488007921-13432-1-git-send-email-kannan.siddharth12@gmail.com>
- In-Reply-To
- <1488007487-12965-1-git-send-email-kannan.siddharth12@gmail.com>
handle_revision_opt() tries to recognize and handle the given argument. If an option was unknown to it, it used to add the option to unkv[(*unkc)++]. This increment of unkc causes the variable in the caller to change.
Teach handle_revision_opt to not update unknown arguments inside unkc anymore. This is now the responsibility of the caller.
There are two callers of this function:
1. setup_revision: Changes have been made so that setup_revision will now update the unknown option in argv
2. parse_revision_opt: No changes are required here. This function throws an error whenever the option provided as argument was unknown to handle_revision_opt().
Signed-off-by: Siddharth Kannan <kannan.siddharth12@gmail.com> --- revision.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/revision.c b/revision.c index b37dbec..5674a9a 100644 --- a/revision.c +++ b/revision.c @@ -2016,8 +2016,6 @@ static int handle_revision_opt(struct rev_info *revs, int argc, const char **arg revs->ignore_missing = 1; } else { int opts = diff_opt_parse(&revs->diffopt, argv, argc, revs->prefix); - if (!opts) - unkv[(*unkc)++] = arg; return opts; } if (revs->graph && revs->track_linear) @@ -2234,6 +2232,8 @@ 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; }
-- 2.1.4