commit b4f858e3e57f45c3ff0d4c8c28b9aa65ac0dcd88
Author:     Jan Klemkow <[email protected]>
AuthorDate: Sat Apr 4 22:27:54 2020 +0200
Commit:     Jan Klemkow <[email protected]>
CommitDate: Sat Apr 4 22:27:54 2020 +0200

    refactor line input handling

diff --git a/scroll.c b/scroll.c
index 806bb39..782f202 100644
--- a/scroll.c
+++ b/scroll.c
@@ -410,31 +410,29 @@ main(int argc, char *argv[])
                        if (n == -1 && errno != EINTR)
                                die("read:");
 
+                       if (write(STDOUT_FILENO, input, n) == -1)
+                               die("write:");
+
                        /* don't save clear screen esc sequences in log */
-                       if (strncmp("\033[H\033[2J", input, n) == 0) {
-                               if (write(STDOUT_FILENO, input, n) == -1)
-                                       die("write:");
+                       if (strncmp("\033[H\033[2J", input, n) == 0)
                                continue;
-                       }
 
                        /* iterate over the input buffer */
                        for (char *c = input; n-- > 0; c++) {
                                /* don't save lines from alternative screen */
-                               if (!isaltscreen(*c)) {
-                                       if (*c == '\r') {
-                                               addline(buf, pos);
-                                               memset(buf, 0, size);
-                                               pos = 0;
-                                       }
-                                       buf[pos++] = *c;
-                                       if (pos == size) {
-                                               size *= 2;
-                                               buf = earealloc(buf, size);
-                                       }
-                               }
+                               if (isaltscreen(*c))
+                                       continue;
 
-                               if (write(STDOUT_FILENO, c, 1) == -1)
-                                       die("write:");
+                               if (*c == '\r') {
+                                       addline(buf, pos);
+                                       memset(buf, 0, size);
+                                       pos = 0;
+                               }
+                               buf[pos++] = *c;
+                               if (pos == size) {
+                                       size *= 2;
+                                       buf = earealloc(buf, size);
+                               }
                        }
                }
        }

Reply via email to