cli: refactor resolve_color_alias() to use binary search

This commit is contained in:
Thomas Haller
2020-10-08 13:07:54 +02:00
parent 7d4f46425c
commit b7da3da7ac

View File

@@ -486,35 +486,34 @@ check_colors(NmcColorOption color_option, char **out_palette_str)
return TRUE; return TRUE;
} }
static const char * static NM_UTILS_STRING_TABLE_LOOKUP_DEFINE(
resolve_color_alias(const char *color) _resolve_color_alias,
{ const char *,
static const struct { { nm_assert(name); },
const char *name; { return NULL; },
const char *alias; {"black", "30"},
} aliases[] = { {"blink", "5"},
{"reset", "0"}, {"bold", "1"}, {"white", "1;37"}, {"blue", "34"},
{"halfbright", "2"}, {"underscore", "4"}, {"blink", "5"}, {"bold", "1"},
{"reverse", "7"}, {"black", "30"}, {"red", "31"}, {"brown", "33"},
{"green", "32"}, {"brown", "33"}, {"yellow", "33"}, /* well, yellow */ {"cyan", "36"},
{"blue", "34"}, {"magenta", "35"}, {"cyan", "36"}, {"darkgray", "90"},
{"gray", "37"}, {"darkgray", "90"}, {"lightred", "91"}, {"gray", "37"},
{"lightgreen", "92"}, {"lightblue", "94"}, {"lightmagenta", "95"}, {"green", "32"},
{"lightcyan", "96"}, {"lightgray", "97"}, {"halfbright", "2"},
}; {"lightblue", "94"},
int i; {"lightcyan", "96"},
{"lightgray", "97"},
/* Shortcut literal sequences. */ {"lightgreen", "92"},
if (g_ascii_isdigit(*color)) {"lightmagenta", "95"},
return color; {"lightred", "91"},
{"magenta", "35"},
for (i = 0; i < G_N_ELEMENTS(aliases); i++) { {"red", "31"},
if (strcmp(color, aliases[i].name) == 0) {"reset", "0"},
return aliases[i].alias; {"reverse", "7"},
} {"underscore", "4"},
{"white", "1;37"},
return color; {"yellow", "33" /* well, yellow */}, );
}
static NM_UTILS_STRING_TABLE_LOOKUP_DEFINE( static NM_UTILS_STRING_TABLE_LOOKUP_DEFINE(
_nm_meta_color_from_name, _nm_meta_color_from_name,
@@ -648,7 +647,7 @@ parse_color_scheme(char * palette_buffer,
continue; continue;
} }
tmp_palette[name_idx] = resolve_color_alias(color); tmp_palette[name_idx] = _resolve_color_alias(color) ?: color;
} }
memcpy(palette, tmp_palette, sizeof(tmp_palette)); memcpy(palette, tmp_palette, sizeof(tmp_palette));