Merge branch 'nd/diff-parseopt'
The diff machinery, one of the oldest parts of the system, which long predates the parse-options API, uses fairly long and complex handcrafted option parser. This is being rewritten to use the parse-options API. * nd/diff-parseopt: diff.c: convert --raw diff.c: convert -W|--[no-]function-context diff.c: convert -U|--unified diff.c: convert -u|-p|--patch diff.c: prepare to use parse_options() for parsing diff.h: avoid bit fields in struct diff_flags diff.h: keep forward struct declarations sorted parse-options: allow ll_callback with OPTION_CALLBACK parse-options: avoid magic return codes parse-options: stop abusing 'callback' for lowlevel callbacks parse-options: add OPT_BITOP() parse-options: disable option abbreviation with PARSE_OPT_KEEP_UNKNOWN parse-options: add one-shot mode parse-options.h: remove extern on function prototypes
This commit is contained in:
@ -848,14 +848,16 @@ static int parse_new_style_cacheinfo(const char *arg,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int cacheinfo_callback(struct parse_opt_ctx_t *ctx,
|
||||
const struct option *opt, int unset)
|
||||
static enum parse_opt_result cacheinfo_callback(
|
||||
struct parse_opt_ctx_t *ctx, const struct option *opt,
|
||||
const char *arg, int unset)
|
||||
{
|
||||
struct object_id oid;
|
||||
unsigned int mode;
|
||||
const char *path;
|
||||
|
||||
BUG_ON_OPT_NEG(unset);
|
||||
BUG_ON_OPT_ARG(arg);
|
||||
|
||||
if (!parse_new_style_cacheinfo(ctx->argv[1], &mode, &oid, &path)) {
|
||||
if (add_cacheinfo(mode, &oid, path, 0))
|
||||
@ -874,12 +876,14 @@ static int cacheinfo_callback(struct parse_opt_ctx_t *ctx,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int stdin_cacheinfo_callback(struct parse_opt_ctx_t *ctx,
|
||||
const struct option *opt, int unset)
|
||||
static enum parse_opt_result stdin_cacheinfo_callback(
|
||||
struct parse_opt_ctx_t *ctx, const struct option *opt,
|
||||
const char *arg, int unset)
|
||||
{
|
||||
int *nul_term_line = opt->value;
|
||||
|
||||
BUG_ON_OPT_NEG(unset);
|
||||
BUG_ON_OPT_ARG(arg);
|
||||
|
||||
if (ctx->argc != 1)
|
||||
return error("option '%s' must be the last argument", opt->long_name);
|
||||
@ -888,12 +892,14 @@ static int stdin_cacheinfo_callback(struct parse_opt_ctx_t *ctx,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int stdin_callback(struct parse_opt_ctx_t *ctx,
|
||||
const struct option *opt, int unset)
|
||||
static enum parse_opt_result stdin_callback(
|
||||
struct parse_opt_ctx_t *ctx, const struct option *opt,
|
||||
const char *arg, int unset)
|
||||
{
|
||||
int *read_from_stdin = opt->value;
|
||||
|
||||
BUG_ON_OPT_NEG(unset);
|
||||
BUG_ON_OPT_ARG(arg);
|
||||
|
||||
if (ctx->argc != 1)
|
||||
return error("option '%s' must be the last argument", opt->long_name);
|
||||
@ -901,13 +907,15 @@ static int stdin_callback(struct parse_opt_ctx_t *ctx,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int unresolve_callback(struct parse_opt_ctx_t *ctx,
|
||||
const struct option *opt, int unset)
|
||||
static enum parse_opt_result unresolve_callback(
|
||||
struct parse_opt_ctx_t *ctx, const struct option *opt,
|
||||
const char *arg, int unset)
|
||||
{
|
||||
int *has_errors = opt->value;
|
||||
const char *prefix = startup_info->prefix;
|
||||
|
||||
BUG_ON_OPT_NEG(unset);
|
||||
BUG_ON_OPT_ARG(arg);
|
||||
|
||||
/* consume remaining arguments. */
|
||||
*has_errors = do_unresolve(ctx->argc, ctx->argv,
|
||||
@ -920,13 +928,15 @@ static int unresolve_callback(struct parse_opt_ctx_t *ctx,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int reupdate_callback(struct parse_opt_ctx_t *ctx,
|
||||
const struct option *opt, int unset)
|
||||
static enum parse_opt_result reupdate_callback(
|
||||
struct parse_opt_ctx_t *ctx, const struct option *opt,
|
||||
const char *arg, int unset)
|
||||
{
|
||||
int *has_errors = opt->value;
|
||||
const char *prefix = startup_info->prefix;
|
||||
|
||||
BUG_ON_OPT_NEG(unset);
|
||||
BUG_ON_OPT_ARG(arg);
|
||||
|
||||
/* consume remaining arguments. */
|
||||
setup_work_tree();
|
||||
@ -986,7 +996,8 @@ int cmd_update_index(int argc, const char **argv, const char *prefix)
|
||||
N_("add the specified entry to the index"),
|
||||
PARSE_OPT_NOARG | /* disallow --cacheinfo=<mode> form */
|
||||
PARSE_OPT_NONEG | PARSE_OPT_LITERAL_ARGHELP,
|
||||
(parse_opt_cb *) cacheinfo_callback},
|
||||
NULL, 0,
|
||||
cacheinfo_callback},
|
||||
{OPTION_CALLBACK, 0, "chmod", &set_executable_bit, "(+|-)x",
|
||||
N_("override the executable bit of the listed files"),
|
||||
PARSE_OPT_NONEG,
|
||||
@ -1012,19 +1023,19 @@ int cmd_update_index(int argc, const char **argv, const char *prefix)
|
||||
{OPTION_LOWLEVEL_CALLBACK, 0, "stdin", &read_from_stdin, NULL,
|
||||
N_("read list of paths to be updated from standard input"),
|
||||
PARSE_OPT_NONEG | PARSE_OPT_NOARG,
|
||||
(parse_opt_cb *) stdin_callback},
|
||||
NULL, 0, stdin_callback},
|
||||
{OPTION_LOWLEVEL_CALLBACK, 0, "index-info", &nul_term_line, NULL,
|
||||
N_("add entries from standard input to the index"),
|
||||
PARSE_OPT_NONEG | PARSE_OPT_NOARG,
|
||||
(parse_opt_cb *) stdin_cacheinfo_callback},
|
||||
NULL, 0, stdin_cacheinfo_callback},
|
||||
{OPTION_LOWLEVEL_CALLBACK, 0, "unresolve", &has_errors, NULL,
|
||||
N_("repopulate stages #2 and #3 for the listed paths"),
|
||||
PARSE_OPT_NONEG | PARSE_OPT_NOARG,
|
||||
(parse_opt_cb *) unresolve_callback},
|
||||
NULL, 0, unresolve_callback},
|
||||
{OPTION_LOWLEVEL_CALLBACK, 'g', "again", &has_errors, NULL,
|
||||
N_("only update entries that differ from HEAD"),
|
||||
PARSE_OPT_NONEG | PARSE_OPT_NOARG,
|
||||
(parse_opt_cb *) reupdate_callback},
|
||||
NULL, 0, reupdate_callback},
|
||||
OPT_BIT(0, "ignore-missing", &refresh_args.flags,
|
||||
N_("ignore files missing from worktree"),
|
||||
REFRESH_IGNORE_MISSING),
|
||||
|
Reference in New Issue
Block a user