X-Git-Url: https://git.xinqibao.xyz/st.git/blobdiff_plain/9f6d8845df3f81e2bc86f593a2f93e098422b2fa..ff241199edc7631d6599c22414ef6823059a1072:/st.c diff --git a/st.c b/st.c index 900534b..dc428ab 100644 --- a/st.c +++ b/st.c @@ -1518,15 +1518,13 @@ ttywrite(const char *s, size_t n) continue; die("select failed: %s\n", strerror(errno)); } - if (FD_ISSET(cmdfd, &rfd)) - lim = ttyread(); if (FD_ISSET(cmdfd, &wfd)) { /* - * Only write 256 bytes at maximum. This seems to be a - * reasonable value for a serial line. Bigger values - * might clog the I/O. + * Only write the bytes written by ttywrite() or the + * default of 256. This seems to be a reasonable value + * for a serial line. Bigger values might clog the I/O. */ - if ((r = write(cmdfd, s, (n < 256)? n : 256)) < 0) + if ((r = write(cmdfd, s, (n < lim)? n : lim)) < 0) goto write_error; if (r < n) { /* @@ -1543,6 +1541,8 @@ ttywrite(const char *s, size_t n) break; } } + if (FD_ISSET(cmdfd, &rfd)) + lim = ttyread(); } return; @@ -3237,7 +3237,7 @@ xclear(int x1, int y1, int x2, int y2) void xhints(void) { - XClassHint class = {opt_class ? opt_class : termname, termname}; + XClassHint class = {termname, opt_class ? opt_class : termname}; XWMHints wm = {.flags = InputHint, .input = 1}; XSizeHints *sizeh = NULL;