X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;f=st.c;h=3a0a5198c61f934a686077d7e03f731d79b93f66;hb=504a165277c13797840c42c64807b59cd4e5f3a5;hp=900534beb3c98486fcd357b8c971ab2523968c02;hpb=9f6d8845df3f81e2bc86f593a2f93e098422b2fa;p=st.git diff --git a/st.c b/st.c index 900534b..3a0a519 100644 --- a/st.c +++ b/st.c @@ -1440,6 +1440,8 @@ ttynew(void) if (openpty(&m, &s, NULL, NULL, &w) < 0) die("openpty failed: %s\n", strerror(errno)); + ttyresize(); + switch (pid = fork()) { case -1: die("fork failed\n"); @@ -1518,15 +1520,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 +1543,8 @@ ttywrite(const char *s, size_t n) break; } } + if (FD_ISSET(cmdfd, &rfd)) + lim = ttyread(); } return; @@ -3237,7 +3239,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; @@ -3469,7 +3471,7 @@ xinit(void) if (xw.gm & XNegative) xw.l += DisplayWidth(xw.dpy, xw.scr) - xw.w - 2; if (xw.gm & YNegative) - xw.t += DisplayWidth(xw.dpy, xw.scr) - xw.h - 2; + xw.t += DisplayHeight(xw.dpy, xw.scr) - xw.h - 2; /* Events */ xw.attrs.background_pixel = dc.col[defaultbg].pixel; @@ -4329,7 +4331,7 @@ run(void) void usage(void) { - die("%s " VERSION " (c) 2010-2015 st engineers\n" + die("%s " VERSION " (c) 2010-2016 st engineers\n" "usage: st [-a] [-v] [-c class] [-f font] [-g geometry] [-o file]\n" " [-i] [-t title] [-T title] [-w windowid] [-e command ...]" " [command ...]\n"