mirror of
https://github.com/mpv-player/mpv.git
synced 2025-12-24 11:50:21 +00:00
msg: add newline conditionally
In idle mode, there is not status line and we sometimes want to have
output without last new line, which were always added after truncation.
Also, make sure we don't overwrite important chars with ellipsis, this
could happen when cut point is near the end.
Fixes: bf025cd289
This commit is contained in:
12
common/msg.c
12
common/msg.c
@@ -401,12 +401,17 @@ static void append_terminal_line(struct mp_log *log, int lev,
|
||||
term_w - ellipsis_width, &cut_pos);
|
||||
if (cut_pos) {
|
||||
int new_len = cut_pos - term_msg->start;
|
||||
bstr rem = {(unsigned char *)cut_pos, term_msg->len - new_len};
|
||||
bstr rem = bstrdup(NULL, (bstr){(unsigned char *)cut_pos, term_msg->len - new_len});
|
||||
void *ptr = rem.start;
|
||||
term_msg->len = new_len;
|
||||
|
||||
bstr_xappend(root, term_msg, bstr0(".."));
|
||||
|
||||
while (rem.len) {
|
||||
if (bstr_eatstart0(&rem, "\n")) {
|
||||
bstr_xappend(root, term_msg, bstr0("\n"));
|
||||
continue;
|
||||
}
|
||||
if (bstr_eatstart0(&rem, "\033[")) {
|
||||
bstr_xappend(root, term_msg, bstr0("\033["));
|
||||
|
||||
@@ -418,12 +423,11 @@ static void append_terminal_line(struct mp_log *log, int lev,
|
||||
}
|
||||
rem = bstr_cut(rem, 1);
|
||||
}
|
||||
talloc_free(ptr);
|
||||
|
||||
bstr_xappend(root, term_msg, bstr0("\n"));
|
||||
width += ellipsis_width;
|
||||
}
|
||||
*line_w = root->isatty[term_msg_fileno(root, lev)]
|
||||
? width : 0;
|
||||
*line_w = root->isatty[term_msg_fileno(root, lev)] ? width : 0;
|
||||
}
|
||||
|
||||
static struct mp_log_buffer_entry *log_buffer_read(struct mp_log_buffer *buffer)
|
||||
|
||||
Reference in New Issue
Block a user