} else if (val < 8) {
out->type = COLOR_ANSI;
out->value = val;
+ return 0;
} else if (val < 256) {
out->type = COLOR_256;
out->value = val;
static int parse_attr(const char *name, int len)
{
- static const int attr_values[] = { 1, 2, 4, 5, 7 };
+ static const int attr_values[] = { 1, 2, 4, 5, 7,
+ 22, 22, 24, 25, 27 };
static const char * const attr_names[] = {
- "bold", "dim", "ul", "blink", "reverse"
+ "bold", "dim", "ul", "blink", "reverse",
+ "nobold", "nodim", "noul", "noblink", "noreverse"
};
int i;
for (i = 0; i < ARRAY_SIZE(attr_names); i++) {
return color_parse_mem(value, strlen(value), dst);
}
-#define COLOR_FOREGROUND '3'
-#define COLOR_BACKGROUND '4'
-
/*
* Write the ANSI color codes for "c" to "out"; the string should
* already have the ANSI escape code in it. "out" should have enough
attr &= ~bit;
if (sep++)
*dst++ = ';';
- *dst++ = '0' + i;
+ dst += sprintf(dst, "%d", i);
}
if (!color_empty(&fg)) {
if (sep++)
*dst++ = ';';
- dst = color_output(dst, &fg, COLOR_FOREGROUND);
+ /* foreground colors are all in the 3x range */
+ dst = color_output(dst, &fg, '3');
}
if (!color_empty(&bg)) {
if (sep++)
*dst++ = ';';
- dst = color_output(dst, &bg, COLOR_BACKGROUND);
+ /* background colors are all in the 4x range */
+ dst = color_output(dst, &bg, '4');
}
*dst++ = 'm';
}