+ a->color = ANSI_INVAL;
+}
+
+void
+ansi_set_color (ANSI * a, int color)
+{
+ int dif;
+ char buf[16];
+ int i;
+ int fg,bg;
+
+ if ((a->color == ANSI_INVAL) || (color!=a->color)) {
+ fg=CRT_COLOR_FG(color);
+ bg=CRT_COLOR_BG(color);
+
+ if (fg & CRT_COLOR_INTENSITY) {
+ fg+=90;
+ } else {
+ fg+=30;
+ }
+
+ if (bg & CRT_COLOR_INTENSITY) {
+ bg+=100;
+ } else {
+ bg+=40;
+ }
+
+ i=sprintf(buf,"\033[%d;%dm",fg,bg);
+#if 0
+ fprintf(stderr,"Color set to %d %d %x\n",fg,bg,color);
+#endif
+
+ ansi_write (a,buf,i);
+ a->color=color;
+ }