revisions: refactor handle_revision_opt into parse_revision_opt.
It seems we're using handle_revision_opt the same way each time, have a wrapper around it that does the 9-liner we copy each time instead. handle_revision_opt can be static in the module for now, it's always possible to make it public again if needed. Signed-off-by: Pierre Habouzit <madcoder@debian.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
14ec9cbdae
commit
6b61ec0564
@ -2305,8 +2305,6 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
|
|||||||
parse_options_start(&ctx, argc, argv, PARSE_OPT_KEEP_DASHDASH |
|
parse_options_start(&ctx, argc, argv, PARSE_OPT_KEEP_DASHDASH |
|
||||||
PARSE_OPT_KEEP_ARGV0);
|
PARSE_OPT_KEEP_ARGV0);
|
||||||
for (;;) {
|
for (;;) {
|
||||||
int n;
|
|
||||||
|
|
||||||
switch (parse_options_step(&ctx, options, blame_opt_usage)) {
|
switch (parse_options_step(&ctx, options, blame_opt_usage)) {
|
||||||
case PARSE_OPT_HELP:
|
case PARSE_OPT_HELP:
|
||||||
exit(129);
|
exit(129);
|
||||||
@ -2320,14 +2318,7 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
|
|||||||
ctx.argv[0] = "--children";
|
ctx.argv[0] = "--children";
|
||||||
reverse = 1;
|
reverse = 1;
|
||||||
}
|
}
|
||||||
n = handle_revision_opt(&revs, ctx.argc, ctx.argv,
|
parse_revision_opt(&revs, &ctx, options, blame_opt_usage);
|
||||||
&ctx.cpidx, ctx.out);
|
|
||||||
if (n <= 0) {
|
|
||||||
error("unknown option `%s'", ctx.argv[0]);
|
|
||||||
usage_with_options(blame_opt_usage, options);
|
|
||||||
}
|
|
||||||
ctx.argv += n;
|
|
||||||
ctx.argc -= n;
|
|
||||||
}
|
}
|
||||||
parse_done:
|
parse_done:
|
||||||
argc = parse_options_end(&ctx);
|
argc = parse_options_end(&ctx);
|
||||||
|
@ -255,21 +255,13 @@ int cmd_shortlog(int argc, const char **argv, const char *prefix)
|
|||||||
PARSE_OPT_KEEP_ARGV0);
|
PARSE_OPT_KEEP_ARGV0);
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
int n;
|
|
||||||
switch (parse_options_step(&ctx, options, shortlog_usage)) {
|
switch (parse_options_step(&ctx, options, shortlog_usage)) {
|
||||||
case PARSE_OPT_HELP:
|
case PARSE_OPT_HELP:
|
||||||
exit(129);
|
exit(129);
|
||||||
case PARSE_OPT_DONE:
|
case PARSE_OPT_DONE:
|
||||||
goto parse_done;
|
goto parse_done;
|
||||||
}
|
}
|
||||||
n = handle_revision_opt(&rev, ctx.argc, ctx.argv,
|
parse_revision_opt(&rev, &ctx, options, shortlog_usage);
|
||||||
&ctx.cpidx, ctx.out);
|
|
||||||
if (n <= 0) {
|
|
||||||
error("unknown option `%s'", ctx.argv[0]);
|
|
||||||
usage_with_options(shortlog_usage, options);
|
|
||||||
}
|
|
||||||
ctx.argv += n;
|
|
||||||
ctx.argc -= n;
|
|
||||||
}
|
}
|
||||||
parse_done:
|
parse_done:
|
||||||
argc = parse_options_end(&ctx);
|
argc = parse_options_end(&ctx);
|
||||||
|
16
revision.c
16
revision.c
@ -957,7 +957,7 @@ static void add_ignore_packed(struct rev_info *revs, const char *name)
|
|||||||
revs->ignore_packed[num] = NULL;
|
revs->ignore_packed[num] = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
int handle_revision_opt(struct rev_info *revs, int argc, const char **argv,
|
static int handle_revision_opt(struct rev_info *revs, int argc, const char **argv,
|
||||||
int *unkc, const char **unkv)
|
int *unkc, const char **unkv)
|
||||||
{
|
{
|
||||||
const char *arg = argv[0];
|
const char *arg = argv[0];
|
||||||
@ -1163,6 +1163,20 @@ int handle_revision_opt(struct rev_info *revs, int argc, const char **argv,
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void parse_revision_opt(struct rev_info *revs, struct parse_opt_ctx_t *ctx,
|
||||||
|
const struct option *options,
|
||||||
|
const char * const usagestr[])
|
||||||
|
{
|
||||||
|
int n = handle_revision_opt(revs, ctx->argc, ctx->argv,
|
||||||
|
&ctx->cpidx, ctx->out);
|
||||||
|
if (n <= 0) {
|
||||||
|
error("unknown option `%s'", ctx->argv[0]);
|
||||||
|
usage_with_options(usagestr, options);
|
||||||
|
}
|
||||||
|
ctx->argv += n;
|
||||||
|
ctx->argc -= n;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Parse revision information, filling in the "rev_info" structure,
|
* Parse revision information, filling in the "rev_info" structure,
|
||||||
* and removing the used arguments from the argument list.
|
* and removing the used arguments from the argument list.
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
#ifndef REVISION_H
|
#ifndef REVISION_H
|
||||||
#define REVISION_H
|
#define REVISION_H
|
||||||
|
|
||||||
|
#include "parse-options.h"
|
||||||
|
|
||||||
#define SEEN (1u<<0)
|
#define SEEN (1u<<0)
|
||||||
#define UNINTERESTING (1u<<1)
|
#define UNINTERESTING (1u<<1)
|
||||||
#define TREESAME (1u<<2)
|
#define TREESAME (1u<<2)
|
||||||
@ -119,8 +121,9 @@ volatile show_early_output_fn_t show_early_output;
|
|||||||
|
|
||||||
extern void init_revisions(struct rev_info *revs, const char *prefix);
|
extern void init_revisions(struct rev_info *revs, const char *prefix);
|
||||||
extern int setup_revisions(int argc, const char **argv, struct rev_info *revs, const char *def);
|
extern int setup_revisions(int argc, const char **argv, struct rev_info *revs, const char *def);
|
||||||
extern int handle_revision_opt(struct rev_info *revs, int argc, const char **argv,
|
extern void parse_revision_opt(struct rev_info *revs, struct parse_opt_ctx_t *ctx,
|
||||||
int *unkc, const char **unkv);
|
const struct option *options,
|
||||||
|
const char * const usagestr[]);
|
||||||
extern int handle_revision_arg(const char *arg, struct rev_info *revs,int flags,int cant_be_filename);
|
extern int handle_revision_arg(const char *arg, struct rev_info *revs,int flags,int cant_be_filename);
|
||||||
|
|
||||||
extern int prepare_revision_walk(struct rev_info *revs);
|
extern int prepare_revision_walk(struct rev_info *revs);
|
||||||
|
Reference in New Issue
Block a user