]> git.ipfire.org Git - thirdparty/util-linux.git/blame - lib/color-names.c
docs: move source-code-management.txt to README
[thirdparty/util-linux.git] / lib / color-names.c
CommitLineData
0bef6f75
KZ
1
2#include "c.h"
3#include "color-names.h"
4
5struct ul_color_name {
6 const char *name;
7 const char *seq;
8};
9
10/*
11 * qsort/bsearch buddy
12 */
13static int cmp_color_name(const void *a0, const void *b0)
14{
15 struct ul_color_name *a = (struct ul_color_name *) a0,
16 *b = (struct ul_color_name *) b0;
17 return strcmp(a->name, b->name);
18}
19
20/*
21 * Maintains human readable color names
22 */
23const char *color_sequence_from_colorname(const char *str)
24{
25 static const struct ul_color_name basic_schemes[] = {
26 { "black", UL_COLOR_BLACK },
4683cf36 27 { "blink", UL_COLOR_BLINK },
0bef6f75 28 { "blue", UL_COLOR_BLUE },
4683cf36 29 { "bold", UL_COLOR_BOLD },
0bef6f75
KZ
30 { "brown", UL_COLOR_BROWN },
31 { "cyan", UL_COLOR_CYAN },
32 { "darkgray", UL_COLOR_DARK_GRAY },
33 { "gray", UL_COLOR_GRAY },
34 { "green", UL_COLOR_GREEN },
4683cf36 35 { "halfbright", UL_COLOR_HALFBRIGHT },
0bef6f75
KZ
36 { "lightblue", UL_COLOR_BOLD_BLUE },
37 { "lightcyan", UL_COLOR_BOLD_CYAN },
38 { "lightgray,", UL_COLOR_GRAY },
39 { "lightgreen", UL_COLOR_BOLD_GREEN },
40 { "lightmagenta", UL_COLOR_BOLD_MAGENTA },
41 { "lightred", UL_COLOR_BOLD_RED },
42 { "magenta", UL_COLOR_MAGENTA },
43 { "red", UL_COLOR_RED },
4683cf36
KZ
44 { "reset", UL_COLOR_RESET, },
45 { "reverse", UL_COLOR_REVERSE },
0bef6f75
KZ
46 { "yellow", UL_COLOR_BOLD_YELLOW },
47 };
48 struct ul_color_name key = { .name = (char *) str }, *res;
49
50 if (!str)
51 return NULL;
52
53 res = bsearch(&key, basic_schemes, ARRAY_SIZE(basic_schemes),
54 sizeof(struct ul_color_name),
55 cmp_color_name);
56 return res ? res->seq : NULL;
57}