diff options
Diffstat (limited to 'degesch.c')
-rw-r--r-- | degesch.c | 34 |
1 files changed, 13 insertions, 21 deletions
@@ -1109,32 +1109,30 @@ static void formatter_flush (struct formatter *self, FILE *stream) { terminal_printer_fn printer = get_attribute_printer (stream); + if (!printer) + { + LIST_FOR_EACH (struct formatter_item, iter, self->items) + if (iter->type == FORMATTER_ITEM_TEXT) + fputs (iter->data, stream); + return; + } const char *attr_reset = str_map_find (&self->ctx->config, ATTR_RESET); - if (printer) - tputs (attr_reset, 1, printer); + tputs (attr_reset, 1, printer); bool is_attributed = false; - bool is_tty = isatty (fileno (stream)); LIST_FOR_EACH (struct formatter_item, iter, self->items) { switch (iter->type) { + char *term; case FORMATTER_ITEM_TEXT: - if (is_tty) - { - char *term = iconv_xstrdup - (self->ctx->term_from_utf8, iter->data, -1, NULL); - fputs (term, stream); - free (term); - } - else - fputs (iter->data, stream); + term = iconv_xstrdup + (self->ctx->term_from_utf8, iter->data, -1, NULL); + fputs (term, stream); + free (term); break; case FORMATTER_ITEM_ATTR: - if (!printer) - continue; - if (is_attributed) { tputs (attr_reset, 1, printer); @@ -1147,16 +1145,10 @@ formatter_flush (struct formatter *self, FILE *stream) } break; case FORMATTER_ITEM_FG_COLOR: - if (!printer) - continue; - tputs (g_terminal.color_set_fg[iter->color], 1, printer); is_attributed = true; break; case FORMATTER_ITEM_BG_COLOR: - if (!printer) - continue; - tputs (g_terminal.color_set_bg[iter->color], 1, printer); is_attributed = true; break; |