blob: 6a302d56a57bcb6649f9947bb963e7997e76484e [file] [log] [blame]
#include "c.h"
#include "color-names.h"
struct ul_color_name {
const char *name;
const char *seq;
};
/*
* qsort/bsearch buddy
*/
static int cmp_color_name(const void *a0, const void *b0)
{
struct ul_color_name *a = (struct ul_color_name *) a0,
*b = (struct ul_color_name *) b0;
return strcmp(a->name, b->name);
}
/*
* Maintains human readable color names
*/
const char *color_sequence_from_colorname(const char *str)
{
static const struct ul_color_name basic_schemes[] = {
{ "black", UL_COLOR_BLACK },
{ "blink", UL_COLOR_BLINK },
{ "blue", UL_COLOR_BLUE },
{ "bold", UL_COLOR_BOLD },
{ "brown", UL_COLOR_BROWN },
{ "cyan", UL_COLOR_CYAN },
{ "darkgray", UL_COLOR_DARK_GRAY },
{ "gray", UL_COLOR_GRAY },
{ "green", UL_COLOR_GREEN },
{ "halfbright", UL_COLOR_HALFBRIGHT },
{ "lightblue", UL_COLOR_BOLD_BLUE },
{ "lightcyan", UL_COLOR_BOLD_CYAN },
{ "lightgray,", UL_COLOR_GRAY },
{ "lightgreen", UL_COLOR_BOLD_GREEN },
{ "lightmagenta", UL_COLOR_BOLD_MAGENTA },
{ "lightred", UL_COLOR_BOLD_RED },
{ "magenta", UL_COLOR_MAGENTA },
{ "red", UL_COLOR_RED },
{ "reset", UL_COLOR_RESET, },
{ "reverse", UL_COLOR_REVERSE },
{ "yellow", UL_COLOR_BOLD_YELLOW },
};
struct ul_color_name key = { .name = (char *) str }, *res;
if (!str)
return NULL;
res = bsearch(&key, basic_schemes, ARRAY_SIZE(basic_schemes),
sizeof(struct ul_color_name),
cmp_color_name);
return res ? res->seq : NULL;
}