]> git.ipfire.org Git - thirdparty/git.git/commitdiff
config: use an enum for type
authorDerrick Stolee <stolee@gmail.com>
Mon, 23 Feb 2026 12:26:55 +0000 (12:26 +0000)
committerJunio C Hamano <gitster@pobox.com>
Mon, 23 Feb 2026 21:23:41 +0000 (13:23 -0800)
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>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/config.c

index 2e8bc6590cbb1faeddbe9a8cc502c0840318cf61..7c4857be6229047cf0f4b8499de9a955077a18cd 100644 (file)
@@ -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), \