[PATCH v2 0/5] builtin/config.c: combined series '--type', '--default'
- From
Taylor Blau <me@ttaylorr.com>
- Date
- Apr 26, 2018, 05:58 UTC
- Message-ID
- <cover.1524722247.git.me@ttaylorr.com>
- In-Reply-To
- <cover.1524716420.git.me@ttaylorr.com>
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@gitster-ct.c.googlers.com [2]: https://public-inbox.org/git/xmqq36zi352x.fsf@gitster-ct.c.googlers.com
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 specifierDocumentation/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