st

Simple Terminal
git clone git://r-36.net/st
Log | Files | Refs | README | LICENSE

commit ef69118028afad1938951a1f7dff8db2aa557879
parent f732ca5f1f03a0a496a07aa6bda15f6c363a2484
Author: Aurélien Aptel <aurelien.aptel@gmail.com>
Date:   Wed,  1 Sep 2010 16:26:12 +0200

factor and cleanup code.

Diffstat:
st.c | 23+++++++++++------------
1 file changed, 11 insertions(+), 12 deletions(-)

diff --git a/st.c b/st.c @@ -387,10 +387,10 @@ dump(char c) { void ttyread(void) { - char buf[BUFSIZ] = {0}; + char buf[BUFSIZ]; int ret; - if((ret = read(cmdfd, buf, BUFSIZ)) < 0) + if((ret = read(cmdfd, buf, LEN(buf))) < 0) die("Couldn't read from shell: %s\n", SERRNO); else tputs(buf, ret); @@ -465,8 +465,7 @@ tscrolldown (int n) { LIMIT(n, 0, term.bot-term.top+1); - for(i = 0; i < n; i++) - memset(term.line[term.bot-i], 0, term.col*sizeof(Glyph)); + tclearregion(0, term.bot-n+1, term.col-1, term.bot); for(i = term.bot; i >= term.top+n; i--) { temp = term.line[i]; @@ -481,8 +480,7 @@ tscrollup (int n) { Line temp; LIMIT(n, 0, term.bot-term.top+1); - for(i = 0; i < n; i++) - memset(term.line[term.top+i], 0, term.col*sizeof(Glyph)); + tclearregion(0, term.top, term.col-1, term.top+n-1); for(i = term.top; i <= term.bot-n; i++) { temp = term.line[i]; @@ -957,7 +955,8 @@ tputc(char c) { term.esc = 0; csiparse(), csihandle(); } - } else if(term.esc & ESC_OSC) { + /* TODO: handle other OSC */ + } else if(term.esc & ESC_OSC) { if(c == ';') { term.titlelen = 0; term.esc = ESC_START | ESC_TITLE; @@ -1201,18 +1200,18 @@ xinit(void) { xloadcols(); /* windows */ - xw.h = term.row * xw.ch + 2*BORDER; - xw.w = term.col * xw.cw + 2*BORDER; + xw.bufh = term.row * xw.ch; + xw.bufw = term.col * xw.cw; + xw.h = xw.bufh + 2*BORDER; + xw.w = xw.bufw + 2*BORDER; xw.win = XCreateSimpleWindow(xw.dis, XRootWindow(xw.dis, xw.scr), 0, 0, xw.w, xw.h, 0, dc.col[DefaultBG], dc.col[DefaultBG]); - xw.bufw = xw.w - 2*BORDER; - xw.bufh = xw.h - 2*BORDER; xw.buf = XCreatePixmap(xw.dis, xw.win, xw.bufw, xw.bufh, XDefaultDepth(xw.dis, xw.scr)); /* gc */ dc.gc = XCreateGC(xw.dis, xw.win, 0, NULL); - + /* event mask */ XSelectInput(xw.dis, xw.win, ExposureMask | KeyPressMask | StructureNotifyMask | FocusChangeMask | PointerMotionMask