Hi, Here is an amended version of my combined series to add '--type' and '--default'. My apologies for the re-roll, I thought that I had looked everything over closely enough :-). Since last time: * Correct an obviously-wrong assignment into '*to_type' [1]. I have moved both of these assignments into the top-line declaration of those variables. * Re-add a removed hunk to support '--type=color' correctly [2]. Thanks, Taylor [1]: https://public-inbox.org/git/xmqq7eou35ev.fsf@xxxxxxxxxxxxxxxxxxxxxxxxx [2]: https://public-inbox.org/git/xmqq36zi352x.fsf@xxxxxxxxxxxxxxxxxxxxxxxxx Taylor Blau (5): builtin/config.c: treat type specifiers singularly builtin/config.c: support `--type=<type>` as preferred alias for `--<type>` builtin/config: introduce `--default` config.c: introduce 'git_config_color' to parse ANSI colors builtin/config: introduce `color` type specifier Documentation/git-config.txt | 81 ++++++++++++-------- builtin/config.c | 143 ++++++++++++++++++++++++++++------- config.c | 10 +++ config.h | 1 + t/t1300-repo-config.sh | 93 +++++++++++++++++++++++ t/t1310-config-default.sh | 36 +++++++++ 6 files changed, 305 insertions(+), 59 deletions(-) create mode 100755 t/t1310-config-default.sh Inter-diff (since v1): diff --git a/builtin/config.c b/builtin/config.c index ec5c11293b..bb62816bba 100644 --- a/builtin/config.c +++ b/builtin/config.c @@ -72,19 +72,18 @@ static struct option builtin_config_options[]; static int option_parse_type(const struct option *opt, const char *arg, int unset) { - int new_type; - int *to_type; + /* + * To support '--<type>' style flags, begin with new_type equal to + * opt->defval. + */ + int new_type = opt->defval; + int *to_type = opt->value; if (unset) { *((int *) opt->value) = 0; return 0; } - /* - * To support '--<type>' style flags, begin with new_type equal to - * opt->defval. - */ - new_type = opt->defval; if (!new_type) { if (!strcmp(arg, "bool")) new_type = TYPE_BOOL; @@ -96,11 +95,12 @@ static int option_parse_type(const struct option *opt, const char *arg, new_type = TYPE_PATH; else if (!strcmp(arg, "expiry-date")) new_type = TYPE_EXPIRY_DATE; + else if (!strcmp(arg, "color")) + new_type = TYPE_COLOR; else die(_("unrecognized --type argument, %s"), arg); } - *to_type = opt->value; if (*to_type && *to_type != new_type) { /* * Complain when there is a new type not equal to the old type. -- 2.17.0