commit 91d126eabe33630163d15f9bb423ca95f95333f4
Author: Jan Klemkow <[email protected]>
AuthorDate: Tue Apr 14 22:40:50 2020 +0200
Commit: Jan Klemkow <[email protected]>
CommitDate: Tue Apr 14 22:40:50 2020 +0200
fix strncmp bug by using strcmp
if input is just a single ESC character, strncmp
just compares the first char of the constant string.
diff --git a/scroll.c b/scroll.c
index c999971..10a04a2 100644
--- a/scroll.c
+++ b/scroll.c
@@ -506,18 +506,20 @@ main(int argc, char *argv[])
}
out:
if (pfd[1].revents & POLLIN) {
- ssize_t n = read(mfd, input, sizeof input);
+ ssize_t n = read(mfd, input, sizeof(input)-1);
if (n == -1 && errno != EINTR)
die("read:");
if (n == 0) /* on exit of child we continue here */
continue; /* let signal handler catch SIGCHLD */
+ input[n] = '\0';
+
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 (strcmp("\033[H\033[2J", input) == 0)
continue;
/* iterate over the input buffer */