X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibsystemd-terminal%2Fsubterm.c;h=7c119ac58aa02eb4e96953bde9c48d5be66af40a;hb=37cf8fee46025d704660a9fc1d1349fe7d0b139d;hp=920b661af4c95e1ec372ac59f998af0c078412cb;hpb=23bbb0de4e3f85d9704a5c12a5afa2dfa0159e41;p=elogind.git diff --git a/src/libsystemd-terminal/subterm.c b/src/libsystemd-terminal/subterm.c index 920b661af..7c119ac58 100644 --- a/src/libsystemd-terminal/subterm.c +++ b/src/libsystemd-terminal/subterm.c @@ -41,6 +41,7 @@ #include "sd-event.h" #include "term-internal.h" #include "util.h" +#include "utf8.h" typedef struct Output Output; typedef struct Terminal Terminal; @@ -102,10 +103,8 @@ static int output_winch(Output *o) { assert_return(o, -EINVAL); r = ioctl(o->fd, TIOCGWINSZ, &wsz); - if (r < 0) { - log_error("error: cannot read window-size: %m"); - return -errno; - } + if (r < 0) + return log_error_errno(errno, "error: cannot read window-size: %m"); if (wsz.ws_col != o->width || wsz.ws_row != o->height) { o->width = wsz.ws_col; @@ -119,14 +118,14 @@ static int output_winch(Output *o) { } static int output_flush(Output *o) { - ssize_t len; + int r; if (o->n_obuf < 1) return 0; - len = loop_write(o->fd, o->obuf, o->n_obuf, false); - if (len < 0) - return log_error_errno(len, "error: cannot write to TTY (%zd): %m", len); + r = loop_write(o->fd, o->obuf, o->n_obuf, false); + if (r < 0) + return log_error_errno(r, "error: cannot write to TTY: %m"); o->n_obuf = 0; @@ -461,7 +460,7 @@ static int output_draw_cell_fn(term_screen *screen, output_printf(o, " "); } else { for (k = 0; k < n_ch; ++k) { - ulen = term_utf8_encode(utf8, ch[k]); + ulen = utf8_encode_unichar(utf8, ch[k]); output_write(o, utf8, ulen); } } @@ -627,7 +626,7 @@ static int terminal_push_tmp(Terminal *t, uint32_t ucs4) { assert(t); - len = term_utf8_encode(buf, ucs4); + len = utf8_encode_unichar(buf, ucs4); if (len < 1) return 0; @@ -707,7 +706,7 @@ static int terminal_io_fn(sd_event_source *source, int fd, uint32_t revents, voi if (errno == EAGAIN || errno == EINTR) return 0; - log_error("error: cannot read from TTY (%d): %m", -errno); + log_error_errno(errno, "error: cannot read from TTY (%d): %m", -errno); return -errno; } @@ -822,16 +821,12 @@ static int terminal_new(Terminal **out, int in_fd, int out_fd) { assert_return(out, -EINVAL); r = tcgetattr(in_fd, &in_attr); - if (r < 0) { - log_error("error: tcgetattr() (%d): %m", -errno); - return -errno; - } + if (r < 0) + return log_error_errno(errno, "error: tcgetattr() (%d): %m", -errno); r = tcgetattr(out_fd, &out_attr); - if (r < 0) { - log_error("error: tcgetattr() (%d): %m", -errno); - return -errno; - } + if (r < 0) + return log_error_errno(errno, "error: tcgetattr() (%d): %m", -errno); t = new0(Terminal, 1); if (!t) @@ -955,7 +950,7 @@ static int terminal_run(Terminal *t) { setenv("COLORTERM", "systemd-subterm", 1); execve(argv[0], argv, environ); - log_error("error: cannot exec %s (%d): %m", argv[0], -errno); + log_error_errno(errno, "error: cannot exec %s (%d): %m", argv[0], -errno); _exit(1); }