bool isatty_safe(int fd);
+int terminal_reset_ansi_seq(int fd);
+
typedef enum TerminalResetFlags {
TERMINAL_RESET_SWITCH_TO_TEXT = 1 << 0,
TERMINAL_RESET_AVOID_ANSI_SEQ = 1 << 1,
/* STDIN/STDOUT should not be non-blocking normally, so let's reset it */
(void) fd_nonblock(f->output_fd, false);
- if (colors_enabled()) {
- (void) loop_write(f->output_fd, ANSI_NORMAL ANSI_ERASE_TO_END_OF_SCREEN, SIZE_MAX);
-
- if (f->title)
- (void) loop_write(f->output_fd, ANSI_WINDOW_TITLE_POP, SIZE_MAX);
- }
-
if (f->last_char_set && f->last_char != '\n') {
const char *s;
f->last_char = '\n';
}
+ if (colors_enabled()) {
+ if (f->title)
+ (void) loop_write(f->output_fd, ANSI_WINDOW_TITLE_POP, SIZE_MAX);
+
+ terminal_reset_ansi_seq(f->output_fd);
+ }
+
if (f->close_output_fd)
f->output_fd = safe_close(f->output_fd);
}