| | 418 | | |
| | 419 | | if (force && term->TI_setf == NULL && term->TI_setaf == NULL)
|
| | 420 | | term->TI_colors = 8; |
| | 421 | | |
| | 422 | | if ((term->TI_setf || term->TI_setaf || force) && |
| | 423 | | term->TI_colors > 0) { |
| | 424 | | term->TI_fg = g_new0(char *, term->TI_colors);
|
| | 425 | | term->TI_bg = g_new0(char *, term->TI_colors);
|
| | 426 | | term->set_fg = _set_fg; |
| | 427 | | term->set_bg = _set_bg; |
| | 428 | | } else { |
| | 429 | | |
| | 430 | | term->TI_colors = 0; |
| | 431 | | term->set_fg = term->set_bg = _ignore_parm; |
| | 432 | | } |
| | 433 | | |
| | 434 | | if (term->TI_setaf) { |
| | 435 | | for (i = 0; i < term->TI_colors; i++) { |
| | 436 | | color = i < 16 ? ansitab[i] : i; |
| | 437 | | term->TI_fg[i] = g_strdup(tparm(term->TI_setaf, color, 0)); |
| | 438 | | } |
| | 439 | | } else if (term->TI_setf) { |
| | 440 | | for (i = 0; i < term->TI_colors; i++) |
| | 441 | | term->TI_fg[i] = g_strdup(tparm(term->TI_setf, i, 0)); |
| | 442 | | } else if (force) { |
| | 443 | | for (i = 0; i < 8; i++) |
| | 444 | | term->TI_fg[i] = g_strdup_printf("\033[%dm", 30+ansitab[i]); |
| | 445 | | } |
| | 446 | | |
| | 447 | | if (term->TI_setab) { |
| | 448 | | for (i = 0; i < term->TI_colors; i++) { |
| | 449 | | color = i < 16 ? ansitab[i] : i; |
| | 450 | | term->TI_bg[i] = g_strdup(tparm(term->TI_setab, color, 0)); |
| | 451 | | } |
| | 452 | | } else if (term->TI_setb) { |
| | 453 | | for (i = 0; i < term->TI_colors; i++) |
| | 454 | | term->TI_bg[i] = g_strdup(tparm(term->TI_setb, i, 0)); |
| | 455 | | } else if (force) { |
| | 456 | | for (i = 0; i < 8; i++) |
| term->TI_bg <= 4095 | 457 | | term->TI_bg[i] = g_strdup_printf("\033[%dm", 40+ansitab[i]); |