[PATCH 1/6 v5] revision.c: do not update argv with unknown option
From: Siddharth Kannan <hidden>
Date: 2017-02-25 07:32:24
Subsystem:
the rest · Maintainer:
Linus Torvalds
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 <redacted> --- 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