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
35
log-tree.c
35
log-tree.c
@ -27,6 +27,14 @@ static char decoration_colors[][COLOR_MAXLEN] = {
|
||||
GIT_COLOR_BOLD_BLUE, /* GRAFTED */
|
||||
};
|
||||
|
||||
static const char *color_decorate_slots[] = {
|
||||
[DECORATION_REF_LOCAL] = "branch",
|
||||
[DECORATION_REF_REMOTE] = "remoteBranch",
|
||||
[DECORATION_REF_TAG] = "tag",
|
||||
[DECORATION_REF_STASH] = "stash",
|
||||
[DECORATION_REF_HEAD] = "HEAD",
|
||||
};
|
||||
|
||||
static const char *decorate_get_color(int decorate_use_color, enum decoration_type ix)
|
||||
{
|
||||
if (want_color(decorate_use_color))
|
||||
@ -34,34 +42,9 @@ static const char *decorate_get_color(int decorate_use_color, enum decoration_ty
|
||||
return "";
|
||||
}
|
||||
|
||||
static int parse_decorate_color_slot(const char *slot)
|
||||
{
|
||||
/*
|
||||
* We're comparing with 'ignore-case' on
|
||||
* (because config.c sets them all tolower),
|
||||
* but let's match the letters in the literal
|
||||
* string values here with how they are
|
||||
* documented in Documentation/config.txt, for
|
||||
* consistency.
|
||||
*
|
||||
* We love being consistent, don't we?
|
||||
*/
|
||||
if (!strcasecmp(slot, "branch"))
|
||||
return DECORATION_REF_LOCAL;
|
||||
if (!strcasecmp(slot, "remoteBranch"))
|
||||
return DECORATION_REF_REMOTE;
|
||||
if (!strcasecmp(slot, "tag"))
|
||||
return DECORATION_REF_TAG;
|
||||
if (!strcasecmp(slot, "stash"))
|
||||
return DECORATION_REF_STASH;
|
||||
if (!strcasecmp(slot, "HEAD"))
|
||||
return DECORATION_REF_HEAD;
|
||||
return -1;
|
||||
}
|
||||
|
||||
int parse_decorate_color_config(const char *var, const char *slot_name, const char *value)
|
||||
{
|
||||
int slot = parse_decorate_color_slot(slot_name);
|
||||
int slot = LOOKUP_CONFIG(color_decorate_slots, slot_name);
|
||||
if (slot < 0)
|
||||
return 0;
|
||||
if (!value)
|
||||
|
Reference in New Issue
Block a user