Add and use generic name->id mapping code for color slot parsing
Instead of hard coding the name-to-id mapping in C code, keep it in an array and use a common function to do the parsing. This reduces code and also allows us to list all possible color slots later. This starts using C99 designated initializers more for convenience (the first designated initializers have been introduced in builtin/clean.c for some time without complaints) Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
17b3e51505
commit
a73b3680c4
@ -42,6 +42,15 @@ enum color_clean {
|
||||
CLEAN_COLOR_ERROR = 5
|
||||
};
|
||||
|
||||
static const char *color_interactive_slots[] = {
|
||||
[CLEAN_COLOR_ERROR] = "error",
|
||||
[CLEAN_COLOR_HEADER] = "header",
|
||||
[CLEAN_COLOR_HELP] = "help",
|
||||
[CLEAN_COLOR_PLAIN] = "plain",
|
||||
[CLEAN_COLOR_PROMPT] = "prompt",
|
||||
[CLEAN_COLOR_RESET] = "reset",
|
||||
};
|
||||
|
||||
static int clean_use_color = -1;
|
||||
static char clean_colors[][COLOR_MAXLEN] = {
|
||||
[CLEAN_COLOR_ERROR] = GIT_COLOR_BOLD_RED,
|
||||
@ -82,23 +91,6 @@ struct menu_stuff {
|
||||
void *stuff;
|
||||
};
|
||||
|
||||
static int parse_clean_color_slot(const char *var)
|
||||
{
|
||||
if (!strcasecmp(var, "reset"))
|
||||
return CLEAN_COLOR_RESET;
|
||||
if (!strcasecmp(var, "plain"))
|
||||
return CLEAN_COLOR_PLAIN;
|
||||
if (!strcasecmp(var, "prompt"))
|
||||
return CLEAN_COLOR_PROMPT;
|
||||
if (!strcasecmp(var, "header"))
|
||||
return CLEAN_COLOR_HEADER;
|
||||
if (!strcasecmp(var, "help"))
|
||||
return CLEAN_COLOR_HELP;
|
||||
if (!strcasecmp(var, "error"))
|
||||
return CLEAN_COLOR_ERROR;
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int git_clean_config(const char *var, const char *value, void *cb)
|
||||
{
|
||||
const char *slot_name;
|
||||
@ -113,7 +105,7 @@ static int git_clean_config(const char *var, const char *value, void *cb)
|
||||
return 0;
|
||||
}
|
||||
if (skip_prefix(var, "color.interactive.", &slot_name)) {
|
||||
int slot = parse_clean_color_slot(slot_name);
|
||||
int slot = LOOKUP_CONFIG(color_interactive_slots, slot_name);
|
||||
if (slot < 0)
|
||||
return 0;
|
||||
if (!value)
|
||||
|
Reference in New Issue
Block a user