Merge branch 'sg/revision-parser-skip-prefix'

Code clean-up.

* sg/revision-parser-skip-prefix:
  revision.c: use skip_prefix() in handle_revision_pseudo_opt()
  revision.c: use skip_prefix() in handle_revision_opt()
  revision.c: stricter parsing of '--early-output'
  revision.c: stricter parsing of '--no-{min,max}-parents'
  revision.h: turn rev_info.early_output back into an unsigned int
This commit is contained in:
Junio C Hamano 2017-06-22 14:15:23 -07:00
commit e77d58a94f
2 changed files with 44 additions and 48 deletions

View file

@ -1725,8 +1725,8 @@ static int handle_revision_opt(struct rev_info *revs, int argc, const char **arg
revs->max_count = atoi(argv[1]); revs->max_count = atoi(argv[1]);
revs->no_walk = 0; revs->no_walk = 0;
return 2; return 2;
} else if (starts_with(arg, "-n")) { } else if (skip_prefix(arg, "-n", &optarg)) {
revs->max_count = atoi(arg + 2); revs->max_count = atoi(optarg);
revs->no_walk = 0; revs->no_walk = 0;
} else if ((argcount = parse_long_opt("max-age", argv, &optarg))) { } else if ((argcount = parse_long_opt("max-age", argv, &optarg))) {
revs->max_age = atoi(optarg); revs->max_age = atoi(optarg);
@ -1785,16 +1785,13 @@ static int handle_revision_opt(struct rev_info *revs, int argc, const char **arg
} else if (!strcmp(arg, "--author-date-order")) { } else if (!strcmp(arg, "--author-date-order")) {
revs->sort_order = REV_SORT_BY_AUTHOR_DATE; revs->sort_order = REV_SORT_BY_AUTHOR_DATE;
revs->topo_order = 1; revs->topo_order = 1;
} else if (starts_with(arg, "--early-output")) { } else if (!strcmp(arg, "--early-output")) {
int count = 100; revs->early_output = 100;
switch (arg[14]) { revs->topo_order = 1;
case '=': } else if (skip_prefix(arg, "--early-output=", &optarg)) {
count = atoi(arg+15); if (strtoul_ui(optarg, 10, &revs->early_output) < 0)
/* Fallthrough */ die("'%s': not a non-negative integer", optarg);
case 0: revs->topo_order = 1;
revs->topo_order = 1;
revs->early_output = count;
}
} else if (!strcmp(arg, "--parents")) { } else if (!strcmp(arg, "--parents")) {
revs->rewrite_parents = 1; revs->rewrite_parents = 1;
revs->print_parents = 1; revs->print_parents = 1;
@ -1810,13 +1807,13 @@ static int handle_revision_opt(struct rev_info *revs, int argc, const char **arg
revs->min_parents = 2; revs->min_parents = 2;
} else if (!strcmp(arg, "--no-merges")) { } else if (!strcmp(arg, "--no-merges")) {
revs->max_parents = 1; revs->max_parents = 1;
} else if (starts_with(arg, "--min-parents=")) { } else if (skip_prefix(arg, "--min-parents=", &optarg)) {
revs->min_parents = atoi(arg+14); revs->min_parents = atoi(optarg);
} else if (starts_with(arg, "--no-min-parents")) { } else if (!strcmp(arg, "--no-min-parents")) {
revs->min_parents = 0; revs->min_parents = 0;
} else if (starts_with(arg, "--max-parents=")) { } else if (skip_prefix(arg, "--max-parents=", &optarg)) {
revs->max_parents = atoi(arg+14); revs->max_parents = atoi(optarg);
} else if (starts_with(arg, "--no-max-parents")) { } else if (!strcmp(arg, "--no-max-parents")) {
revs->max_parents = -1; revs->max_parents = -1;
} else if (!strcmp(arg, "--boundary")) { } else if (!strcmp(arg, "--boundary")) {
revs->boundary = 1; revs->boundary = 1;
@ -1897,14 +1894,15 @@ static int handle_revision_opt(struct rev_info *revs, int argc, const char **arg
revs->verbose_header = 1; revs->verbose_header = 1;
revs->pretty_given = 1; revs->pretty_given = 1;
get_commit_format(NULL, revs); get_commit_format(NULL, revs);
} else if (starts_with(arg, "--pretty=") || starts_with(arg, "--format=")) { } else if (skip_prefix(arg, "--pretty=", &optarg) ||
skip_prefix(arg, "--format=", &optarg)) {
/* /*
* Detached form ("--pretty X" as opposed to "--pretty=X") * Detached form ("--pretty X" as opposed to "--pretty=X")
* not allowed, since the argument is optional. * not allowed, since the argument is optional.
*/ */
revs->verbose_header = 1; revs->verbose_header = 1;
revs->pretty_given = 1; revs->pretty_given = 1;
get_commit_format(arg+9, revs); get_commit_format(optarg, revs);
} else if (!strcmp(arg, "--expand-tabs")) { } else if (!strcmp(arg, "--expand-tabs")) {
revs->expand_tabs_in_log = 8; revs->expand_tabs_in_log = 8;
} else if (!strcmp(arg, "--no-expand-tabs")) { } else if (!strcmp(arg, "--no-expand-tabs")) {
@ -1922,26 +1920,23 @@ static int handle_revision_opt(struct rev_info *revs, int argc, const char **arg
revs->show_signature = 1; revs->show_signature = 1;
} else if (!strcmp(arg, "--no-show-signature")) { } else if (!strcmp(arg, "--no-show-signature")) {
revs->show_signature = 0; revs->show_signature = 0;
} else if (!strcmp(arg, "--show-linear-break") || } else if (!strcmp(arg, "--show-linear-break")) {
starts_with(arg, "--show-linear-break=")) { revs->break_bar = " ..........";
if (starts_with(arg, "--show-linear-break="))
revs->break_bar = xstrdup(arg + 20);
else
revs->break_bar = " ..........";
revs->track_linear = 1; revs->track_linear = 1;
revs->track_first_time = 1; revs->track_first_time = 1;
} else if (starts_with(arg, "--show-notes=") || } else if (skip_prefix(arg, "--show-linear-break=", &optarg)) {
starts_with(arg, "--notes=")) { revs->break_bar = xstrdup(optarg);
revs->track_linear = 1;
revs->track_first_time = 1;
} else if (skip_prefix(arg, "--show-notes=", &optarg) ||
skip_prefix(arg, "--notes=", &optarg)) {
struct strbuf buf = STRBUF_INIT; struct strbuf buf = STRBUF_INIT;
revs->show_notes = 1; revs->show_notes = 1;
revs->show_notes_given = 1; revs->show_notes_given = 1;
if (starts_with(arg, "--show-notes")) { if (starts_with(arg, "--show-notes=") &&
if (revs->notes_opt.use_default_notes < 0) revs->notes_opt.use_default_notes < 0)
revs->notes_opt.use_default_notes = 1; revs->notes_opt.use_default_notes = 1;
strbuf_addstr(&buf, arg+13); strbuf_addstr(&buf, optarg);
}
else
strbuf_addstr(&buf, arg+8);
expand_notes_ref(&buf); expand_notes_ref(&buf);
string_list_append(&revs->notes_opt.extra_notes_refs, string_list_append(&revs->notes_opt.extra_notes_refs,
strbuf_detach(&buf, NULL)); strbuf_detach(&buf, NULL));
@ -1978,8 +1973,8 @@ static int handle_revision_opt(struct rev_info *revs, int argc, const char **arg
revs->abbrev = 0; revs->abbrev = 0;
} else if (!strcmp(arg, "--abbrev")) { } else if (!strcmp(arg, "--abbrev")) {
revs->abbrev = DEFAULT_ABBREV; revs->abbrev = DEFAULT_ABBREV;
} else if (starts_with(arg, "--abbrev=")) { } else if (skip_prefix(arg, "--abbrev=", &optarg)) {
revs->abbrev = strtoul(arg + 9, NULL, 10); revs->abbrev = strtoul(optarg, NULL, 10);
if (revs->abbrev < MINIMUM_ABBREV) if (revs->abbrev < MINIMUM_ABBREV)
revs->abbrev = MINIMUM_ABBREV; revs->abbrev = MINIMUM_ABBREV;
else if (revs->abbrev > 40) else if (revs->abbrev > 40)
@ -2140,20 +2135,20 @@ static int handle_revision_pseudo_opt(const char *submodule,
} else if ((argcount = parse_long_opt("exclude", argv, &optarg))) { } else if ((argcount = parse_long_opt("exclude", argv, &optarg))) {
add_ref_exclusion(&revs->ref_excludes, optarg); add_ref_exclusion(&revs->ref_excludes, optarg);
return argcount; return argcount;
} else if (starts_with(arg, "--branches=")) { } else if (skip_prefix(arg, "--branches=", &optarg)) {
struct all_refs_cb cb; struct all_refs_cb cb;
init_all_refs_cb(&cb, revs, *flags); init_all_refs_cb(&cb, revs, *flags);
for_each_glob_ref_in(handle_one_ref, arg + 11, "refs/heads/", &cb); for_each_glob_ref_in(handle_one_ref, optarg, "refs/heads/", &cb);
clear_ref_exclusion(&revs->ref_excludes); clear_ref_exclusion(&revs->ref_excludes);
} else if (starts_with(arg, "--tags=")) { } else if (skip_prefix(arg, "--tags=", &optarg)) {
struct all_refs_cb cb; struct all_refs_cb cb;
init_all_refs_cb(&cb, revs, *flags); init_all_refs_cb(&cb, revs, *flags);
for_each_glob_ref_in(handle_one_ref, arg + 7, "refs/tags/", &cb); for_each_glob_ref_in(handle_one_ref, optarg, "refs/tags/", &cb);
clear_ref_exclusion(&revs->ref_excludes); clear_ref_exclusion(&revs->ref_excludes);
} else if (starts_with(arg, "--remotes=")) { } else if (skip_prefix(arg, "--remotes=", &optarg)) {
struct all_refs_cb cb; struct all_refs_cb cb;
init_all_refs_cb(&cb, revs, *flags); init_all_refs_cb(&cb, revs, *flags);
for_each_glob_ref_in(handle_one_ref, arg + 10, "refs/remotes/", &cb); for_each_glob_ref_in(handle_one_ref, optarg, "refs/remotes/", &cb);
clear_ref_exclusion(&revs->ref_excludes); clear_ref_exclusion(&revs->ref_excludes);
} else if (!strcmp(arg, "--reflog")) { } else if (!strcmp(arg, "--reflog")) {
add_reflogs_to_pending(revs, *flags); add_reflogs_to_pending(revs, *flags);
@ -2163,14 +2158,14 @@ static int handle_revision_pseudo_opt(const char *submodule,
*flags ^= UNINTERESTING | BOTTOM; *flags ^= UNINTERESTING | BOTTOM;
} else if (!strcmp(arg, "--no-walk")) { } else if (!strcmp(arg, "--no-walk")) {
revs->no_walk = REVISION_WALK_NO_WALK_SORTED; revs->no_walk = REVISION_WALK_NO_WALK_SORTED;
} else if (starts_with(arg, "--no-walk=")) { } else if (skip_prefix(arg, "--no-walk=", &optarg)) {
/* /*
* Detached form ("--no-walk X" as opposed to "--no-walk=X") * Detached form ("--no-walk X" as opposed to "--no-walk=X")
* not allowed, since the argument is optional. * not allowed, since the argument is optional.
*/ */
if (!strcmp(arg + 10, "sorted")) if (!strcmp(optarg, "sorted"))
revs->no_walk = REVISION_WALK_NO_WALK_SORTED; revs->no_walk = REVISION_WALK_NO_WALK_SORTED;
else if (!strcmp(arg + 10, "unsorted")) else if (!strcmp(optarg, "unsorted"))
revs->no_walk = REVISION_WALK_NO_WALK_UNSORTED; revs->no_walk = REVISION_WALK_NO_WALK_UNSORTED;
else else
return error("invalid argument to --no-walk"); return error("invalid argument to --no-walk");

View file

@ -74,8 +74,9 @@ struct rev_info {
/* topo-sort */ /* topo-sort */
enum rev_sort_order sort_order; enum rev_sort_order sort_order;
unsigned int early_output:1, unsigned int early_output;
ignore_missing:1,
unsigned int ignore_missing:1,
ignore_missing_links:1; ignore_missing_links:1;
/* Traversal flags */ /* Traversal flags */