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);
+ }
}
}
}
