[PATCH v3 13/13] config: use an enum for type
- From
Derrick Stolee via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Feb 23, 2026, 12:26 UTC
- Message-ID
- <3c32c037bc9651ca5492b2e1f9f6a30dc0d9c989.1771849615.git.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.2044.v3.git.1771849615.gitgitgadget@gmail.com>
From: Derrick Stolee <stolee@gmail.com>
The --type=<X> option for 'git config' has previously been defined using macros, but using a typed enum is better for tracking the possible values.
Move the definition up to make sure it is defined before a macro uses some of its terms.
Update the initializer for config_display_options to explicitly set 'type' to TYPE_NONE even though this is implied by a zero value.
This assists in knowing that the switch statement added in the previous change has a complete set of cases for a properly-valued enum.
Signed-off-by: Derrick Stolee <stolee@gmail.com> --- builtin/config.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-)
diff --git a/builtin/config.c b/builtin/config.c index 2e8bc6590c..7c4857be62 100644 --- a/builtin/config.c +++ b/builtin/config.c @@ -86,6 +86,17 @@ struct config_location_options { .respect_includes_opt = -1, \ } +enum config_type { + TYPE_NONE = 0, + TYPE_BOOL, + TYPE_INT, + TYPE_BOOL_OR_INT, + TYPE_PATH, + TYPE_EXPIRY_DATE, + TYPE_COLOR, + TYPE_BOOL_OR_STR, +}; + #define CONFIG_TYPE_OPTIONS(type) \ OPT_GROUP(N_("Type")), \ OPT_CALLBACK('t', "type", &type, N_("type"), N_("value is given this type"), option_parse_type), \ @@ -111,7 +122,7 @@ struct config_display_options { int show_origin; int show_scope; int show_keys; - int type; + enum config_type type; char *default_value; /* Populated via `display_options_init()`. */ int term; @@ -122,17 +133,9 @@ struct config_display_options { .term = '\n', \ .delim = '=', \ .key_delim = ' ', \ + .type = TYPE_NONE, \ } -#define TYPE_NONE 0 -#define TYPE_BOOL 1 -#define TYPE_INT 2 -#define TYPE_BOOL_OR_INT 3 -#define TYPE_PATH 4 -#define TYPE_EXPIRY_DATE 5 -#define TYPE_COLOR 6 -#define TYPE_BOOL_OR_STR 7 - #define OPT_CALLBACK_VALUE(s, l, v, h, i) { \ .type = OPTION_CALLBACK, \ .short_name = (s), \
-- gitgitgadget