diff options
author | Thomas Haller <thaller@redhat.com> | 2020-10-08 13:07:54 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2020-10-08 17:01:27 +0200 |
commit | b7da3da7ac6574e5f70b26352491282b25f726ee (patch) | |
tree | 091cb60ad4c75c3a8cc5bc417cf12158a47fb05d | |
parent | 7d4f46425c1a03406900e964b19b22079a9af595 (diff) | |
download | NetworkManager-b7da3da7ac6574e5f70b26352491282b25f726ee.tar.gz |
cli: refactor resolve_color_alias() to use binary search
-rw-r--r-- | clients/cli/nmcli.c | 59 |
1 files changed, 29 insertions, 30 deletions
diff --git a/clients/cli/nmcli.c b/clients/cli/nmcli.c index 5a2e6396b5..0f4023f61a 100644 --- a/clients/cli/nmcli.c +++ b/clients/cli/nmcli.c @@ -486,35 +486,34 @@ check_colors(NmcColorOption color_option, char **out_palette_str) return TRUE; } -static const char * -resolve_color_alias(const char *color) -{ - static const struct { - const char *name; - const char *alias; - } aliases[] = { - {"reset", "0"}, {"bold", "1"}, {"white", "1;37"}, - {"halfbright", "2"}, {"underscore", "4"}, {"blink", "5"}, - {"reverse", "7"}, {"black", "30"}, {"red", "31"}, - {"green", "32"}, {"brown", "33"}, {"yellow", "33"}, /* well, yellow */ - {"blue", "34"}, {"magenta", "35"}, {"cyan", "36"}, - {"gray", "37"}, {"darkgray", "90"}, {"lightred", "91"}, - {"lightgreen", "92"}, {"lightblue", "94"}, {"lightmagenta", "95"}, - {"lightcyan", "96"}, {"lightgray", "97"}, - }; - int i; - - /* Shortcut literal sequences. */ - if (g_ascii_isdigit(*color)) - return color; - - for (i = 0; i < G_N_ELEMENTS(aliases); i++) { - if (strcmp(color, aliases[i].name) == 0) - return aliases[i].alias; - } - - return color; -} +static NM_UTILS_STRING_TABLE_LOOKUP_DEFINE( + _resolve_color_alias, + const char *, + { nm_assert(name); }, + { return NULL; }, + {"black", "30"}, + {"blink", "5"}, + {"blue", "34"}, + {"bold", "1"}, + {"brown", "33"}, + {"cyan", "36"}, + {"darkgray", "90"}, + {"gray", "37"}, + {"green", "32"}, + {"halfbright", "2"}, + {"lightblue", "94"}, + {"lightcyan", "96"}, + {"lightgray", "97"}, + {"lightgreen", "92"}, + {"lightmagenta", "95"}, + {"lightred", "91"}, + {"magenta", "35"}, + {"red", "31"}, + {"reset", "0"}, + {"reverse", "7"}, + {"underscore", "4"}, + {"white", "1;37"}, + {"yellow", "33" /* well, yellow */}, ); static NM_UTILS_STRING_TABLE_LOOKUP_DEFINE( _nm_meta_color_from_name, @@ -648,7 +647,7 @@ parse_color_scheme(char * palette_buffer, 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)); |