aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDerrick Stolee <stolee@gmail.com>2026-02-23 12:26:55 +0000
committerJunio C Hamano <gitster@pobox.com>2026-02-23 13:23:41 -0800
commit096aa6099834ce00401a369b34cbff4868ea5704 (patch)
tree8a97fb742a3f6c0f8aba9ec6844954cd6b08cc11
parent645f92a3e9179ebf1ed42dc4fa05cc8dd71e3e9c (diff)
downloadgit-096aa6099834ce00401a369b34cbff4868ea5704.tar.xz
config: use an enum for type
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>
-rw-r--r--builtin/config.c23
1 files 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), \