]>
Commit | Line | Data |
---|---|---|
0bef6f75 KZ |
1 | |
2 | #include "c.h" | |
3 | #include "color-names.h" | |
4 | ||
5 | struct ul_color_name { | |
6 | const char *name; | |
7 | const char *seq; | |
8 | }; | |
9 | ||
10 | /* | |
11 | * qsort/bsearch buddy | |
12 | */ | |
13 | static 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 | */ | |
23 | const 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 | } |