summaryrefslogtreecommitdiffstats
path: root/sys/dev/syscons
diff options
context:
space:
mode:
authored <ed@FreeBSD.org>2009-01-17 23:01:40 +0000
committered <ed@FreeBSD.org>2009-01-17 23:01:40 +0000
commit57e1b2ae2fb151d3492499e3d96ad296905b0284 (patch)
treeb69876a2d2935b3ccf03558cc6aa364688b3b2d6 /sys/dev/syscons
parent7bd93f5fdba0b7c3e3ccdf0397b393a6c18ffbdd (diff)
downloadFreeBSD-src-57e1b2ae2fb151d3492499e3d96ad296905b0284.zip
FreeBSD-src-57e1b2ae2fb151d3492499e3d96ad296905b0284.tar.gz
Fix for my previous commit: color mapping is not 1:1.
Cons25 doesn't seem to use a straight 1:1 mapping to the ANSI colors, but uses the same color numbers as at least used by syscons on i386. I suspect if you change the definitions on a different architecture, things may break? Not sure. Add a small array to convert syscons-style color codes to ANSI equivalents, which are used by libteken internally. I didn't notice this bug, because I only tested my code with black, white and green, all of them shared the same numbers.
Diffstat (limited to 'sys/dev/syscons')
-rw-r--r--sys/dev/syscons/teken/teken_subr_compat.h11
1 files changed, 7 insertions, 4 deletions
diff --git a/sys/dev/syscons/teken/teken_subr_compat.h b/sys/dev/syscons/teken/teken_subr_compat.h
index dea30d3..d524301 100644
--- a/sys/dev/syscons/teken/teken_subr_compat.h
+++ b/sys/dev/syscons/teken/teken_subr_compat.h
@@ -33,20 +33,23 @@ teken_subr_cons25_set_cursor_type(teken_t *t, unsigned int type)
teken_funcs_param(t, TP_SHOWCURSOR, type != 1);
}
+static teken_color_t cons25_colors[8] = { TC_BLACK, TC_BLUE, TC_GREEN,
+ TC_CYAN, TC_RED, TC_MAGENTA, TC_BROWN, TC_WHITE };
+
static void
teken_subr_cons25_set_adapter_background(teken_t *t, unsigned int c)
{
- t->t_defattr.ta_bgcolor = c % 8;
- t->t_curattr.ta_bgcolor = c % 8;
+ t->t_defattr.ta_bgcolor = cons25_colors[c % 8];
+ t->t_curattr.ta_bgcolor = cons25_colors[c % 8];
}
static void
teken_subr_cons25_set_adapter_foreground(teken_t *t, unsigned int c)
{
- t->t_defattr.ta_fgcolor = c % 8;
- t->t_curattr.ta_fgcolor = c % 8;
+ t->t_defattr.ta_fgcolor = cons25_colors[c % 8];
+ t->t_curattr.ta_fgcolor = cons25_colors[c % 8];
if (c >= 8) {
t->t_defattr.ta_format |= TF_BOLD;
t->t_curattr.ta_format |= TF_BOLD;
OpenPOWER on IntegriCloud