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....@gitster-ct.c.googlers.com
[2]: https://public-inbox.org/git/xmqq36zi352x....@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 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

Reply via email to