diff options
author | Aurélien Aptel | 2010-09-01 17:21:09 +0200 |
---|---|---|
committer | Aurélien Aptel | 2010-09-01 17:21:09 +0200 |
commit | 5ce6c5c0324ef3b7d0f5b9e6e2ba4d87ae0d3bb1 (patch) | |
tree | 2cfa099cb73f60e0011f63ddc3ff742040ab9c2e | |
parent | ef69118028afad1938951a1f7dff8db2aa557879 (diff) | |
download | st-5ce6c5c0324ef3b7d0f5b9e6e2ba4d87ae0d3bb1.tar.gz st-5ce6c5c0324ef3b7d0f5b9e6e2ba4d87ae0d3bb1.tar.xz st-5ce6c5c0324ef3b7d0f5b9e6e2ba4d87ae0d3bb1.zip |
fixed IL and DL.
-rw-r--r-- | st.c | 30 |
1 files changed, 11 insertions, 19 deletions
@@ -392,8 +392,10 @@ ttyread(void) { if((ret = read(cmdfd, buf, LEN(buf))) < 0) die("Couldn't read from shell: %s\n", SERRNO); - else + else { + printf("ttyread %d\n", ret); tputs(buf, ret); + } } void @@ -589,21 +591,16 @@ tinsertblankline(int n) { Line blank; int bot = term.bot; - if(term.c.y > term.bot) - bot = term.row - 1; - else if(term.c.y < term.top) - bot = term.top - 1; - if(term.c.y + n >= bot) { - tclearregion(0, term.c.y, term.col-1, bot); + if(term.c.y < term.top || term.c.y > term.bot) return; - } + + LIMIT(n, 0, bot-term.c.y+1); + tclearregion(0, bot-n+1, term.col-1, bot); for(i = bot; i >= term.c.y+n; i--) { /* swap deleted line <-> blanked line */ blank = term.line[i]; term.line[i] = term.line[i-n]; term.line[i-n] = blank; - /* blank it */ - memset(blank, 0, term.col * sizeof(Glyph)); } } @@ -613,21 +610,16 @@ tdeleteline(int n) { Line blank; int bot = term.bot; - if(term.c.y > term.bot) - bot = term.row - 1; - else if(term.c.y < term.top) - bot = term.top - 1; - if(term.c.y + n >= bot) { - tclearregion(0, term.c.y, term.col-1, bot); + if(term.c.y < term.top || term.c.y > term.bot) return; - } + + LIMIT(n, 0, bot-term.c.y+1); + tclearregion(0, term.c.y, term.col-1, term.c.y+n-1); for(i = term.c.y; i <= bot-n; i++) { /* swap deleted line <-> blanked line */ blank = term.line[i]; term.line[i] = term.line[i+n]; term.line[i+n] = blank; - /* blank it */ - memset(blank, 0, term.col * sizeof(Glyph)); } } |