Integrate clear screen detection into isaltscreen - scroll - scrollbackbuffer program for st
 (HTM) git clone git://git.suckless.org/scroll
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 63f16494898a219a41fe5538a86af21b827bdb11
 (DIR) parent 54ac69d9a563d71dc9fba77c1b231e015842908a
 (HTM) Author: Jochen Sprickerhof <git@jochen.sprickerhof.de>
       Date:   Tue, 14 Apr 2020 23:32:48 +0200
       
       Integrate clear screen detection into isaltscreen
       
       Diffstat:
         M scroll.c                            |      18 +++++++++---------
       
       1 file changed, 9 insertions(+), 9 deletions(-)
       ---
 (DIR) diff --git a/scroll.c b/scroll.c
       @@ -197,9 +197,9 @@ strelen(const char *buf, size_t size)
                return len;
        }
        
       -/* detect alternative screen switching */
       +/* detect alternative screen switching and clear screen */
        bool
       -isaltscreen(char c)
       +scipesc(char c)
        {
                static enum {CHAR, BREK, ESC} state = CHAR;
                static char buf[BUFSIZ];
       @@ -238,6 +238,10 @@ isaltscreen(char c)
                                    strcmp(buf, "?1047l") == 0 ||
                                    strcmp(buf, "?47l"  ) == 0)
                                        altscreen = false;
       +
       +                        /* don't save clear screen esc sequences in log */
       +                        if (strcmp(buf, "H\033[2J") == 0)
       +                                return true;
                        }
                        break;
                }
       @@ -518,15 +522,11 @@ main(int argc, char *argv[])
                                if (write(STDOUT_FILENO, input, n) == -1)
                                        die("write:");
        
       -                        /* don't save clear screen esc sequences in log */
       -                        /* TODO: may need to check if it wasn't read in one string */
       -                        if (strcmp("\033[H\033[2J", input) == 0)
       -                                continue;
       -
                                /* iterate over the input buffer */
                                for (char *c = input; n-- > 0; c++) {
       -                                /* don't save lines from alternative screen */
       -                                if (isaltscreen(*c))
       +                                /* don't save alternative screen and */
       +                                /* clear screen esc sequences to scrollback */
       +                                if (scipesc(*c))
                                                continue;
        
                                        if (*c == '\n') {