parseopt: add OPT_NEGBIT
Add OPTION_NEGBIT and OPT_NEGBIT, mirroring OPTION_BIT and OPT_BIT. OPT_NEGBIT can be used together with OPT_BIT to define two options that cancel each other out. Note: this patch removes the reminder from the test script because it adds a test for --no-or4 and there already was one for --or4. Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
5a0e4a2a32
commit
2f4b97f910
@ -50,6 +50,7 @@ static int get_value(struct parse_opt_ctx_t *p,
|
||||
/* FALLTHROUGH */
|
||||
case OPTION_BOOLEAN:
|
||||
case OPTION_BIT:
|
||||
case OPTION_NEGBIT:
|
||||
case OPTION_SET_INT:
|
||||
case OPTION_SET_PTR:
|
||||
return opterror(opt, "takes no value", flags);
|
||||
@ -66,6 +67,13 @@ static int get_value(struct parse_opt_ctx_t *p,
|
||||
*(int *)opt->value |= opt->defval;
|
||||
return 0;
|
||||
|
||||
case OPTION_NEGBIT:
|
||||
if (unset)
|
||||
*(int *)opt->value |= opt->defval;
|
||||
else
|
||||
*(int *)opt->value &= ~opt->defval;
|
||||
return 0;
|
||||
|
||||
case OPTION_BOOLEAN:
|
||||
*(int *)opt->value = unset ? 0 : *(int *)opt->value + 1;
|
||||
return 0;
|
||||
|
Reference in New Issue
Block a user