fixed IL and DL. - st - Personal fork of st
 (HTM) git clone git://git.drkhsh.at/st.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 5ce6c5c0324ef3b7d0f5b9e6e2ba4d87ae0d3bb1
 (DIR) parent ef69118028afad1938951a1f7dff8db2aa557879
 (HTM) Author: Aurélien Aptel <aurelien.aptel@gmail.com>
       Date:   Wed,  1 Sep 2010 17:21:09 +0200
       
       fixed IL and DL.
       
       Diffstat:
         M st.c                                |      30 +++++++++++-------------------
       
       1 file changed, 11 insertions(+), 19 deletions(-)
       ---
 (DIR) diff --git a/st.c b/st.c
       @@ -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));
                }
        }