parse-options: allow ll_callback with OPTION_CALLBACK

OPTION_CALLBACK is much simpler/safer to use, but parse_opt_cb does
not allow access to parse_opt_ctx_t, which sometimes is useful
(e.g. to obtain the prefix).

Extending parse_opt_cb to take parse_opt_cb could result in a lot of
changes. Instead let's just allow ll_callback to be used with
OPTION_CALLBACK. The user will have to be careful, not to change
anything in ctx, or return wrong result code. But that's the price for
ll_callback.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Nguyễn Thái Ngọc Duy
2019-01-27 07:35:28 +07:00
committed by Junio C Hamano
parent f41179f16b
commit 3ebbe28989
5 changed files with 52 additions and 23 deletions

View File

@ -114,11 +114,13 @@ static int option_parse_message(const struct option *opt,
static enum parse_opt_result option_read_message(struct parse_opt_ctx_t *ctx,
const struct option *opt,
const char *arg_not_used,
int unset)
{
struct strbuf *buf = opt->value;
const char *arg;
BUG_ON_OPT_ARG(arg_not_used);
if (unset)
BUG("-F cannot be negated");