tools: kwboot: Fix detection of quit esc sequence

Quit esc sequence may be also in the middle of the read buffer.
Fix the detection for that case.

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Stefan Roese <sr@denx.de>
diff --git a/tools/kwboot.c b/tools/kwboot.c
index 2684f0e..7737188 100644
--- a/tools/kwboot.c
+++ b/tools/kwboot.c
@@ -1183,10 +1183,10 @@
 static int
 kwboot_term_pipe(int in, int out, const char *quit, int *s)
 {
+	char buf[128];
 	ssize_t nin;
-	char _buf[128], *buf = _buf;
 
-	nin = read(in, buf, sizeof(_buf));
+	nin = read(in, buf, sizeof(buf));
 	if (nin <= 0)
 		return -1;
 
@@ -1194,18 +1194,21 @@
 		int i;
 
 		for (i = 0; i < nin; i++) {
-			if (*buf == quit[*s]) {
+			if (buf[i] == quit[*s]) {
 				(*s)++;
-				if (!quit[*s])
-					return 0;
-				buf++;
-				nin--;
+				if (!quit[*s]) {
+					nin = i - *s;
+					break;
+				}
 			} else {
-				if (kwboot_write(out, quit, *s) < 0)
+				if (*s > i && kwboot_write(out, quit, *s - i) < 0)
 					return -1;
 				*s = 0;
 			}
 		}
+
+		if (i == nin)
+			nin -= *s;
 	}
 
 	if (kwboot_write(out, buf, nin) < 0)