shithub: trueawk

Download patch

ref: 39133291204ab182e6fd24baacab0bb3a3f86606
parent: 30fb6ef0da1f33473637a711381b58961331dc5f
parent: 92f9e8a9be1e6ded911f66c5cb81f28093c5450e
author: ozan yigit <ozan.yigit@gmail.com>
date: Sat Jul 24 11:10:25 EDT 2021

Merge branch 'fix-readrec' of https://github.com/mpinjr/awk into staging

--- a/lib.c
+++ b/lib.c
@@ -242,6 +242,7 @@
 		}
 		if (found)
 			setptr(patbeg, '\0');
+		isrec = (found == 0 && *buf == '\0') ? 0 : 1;
 	} else {
 		if ((sep = *rs) == 0) {
 			sep = '\n';
@@ -271,10 +272,10 @@
 		if (!adjbuf(&buf, &bufsize, 1+rr-buf, recsize, &rr, "readrec 3"))
 			FATAL("input record `%.30s...' too long", buf);
 		*rr = 0;
+		isrec = (c == EOF && rr == buf) ? 0 : 1;
 	}
 	*pbuf = buf;
 	*pbufsize = bufsize;
-	isrec = *buf || !feof(inf);
 	DPRINTF("readrec saw <%s>, returns %d\n", buf, isrec);
 	return isrec;
 }
--- a/testdir/T.misc
+++ b/testdir/T.misc
@@ -186,6 +186,13 @@
 }' >foo1
 $awk 'END {print NR}' foo1 | grep 4 >/dev/null || echo 'BAD: T.misc abcdef fails'
 
+# Test for RS regex matching an empty record at EOF
+echo a | $awk 1 RS='a\n' > foo1
+cat << \EOF > foo2
+
+EOF
+diff foo1 foo2 || echo 'BAD: T.misc RS regex matching an empty record at EOF fails'
+
 # Test for RS regex being reapplied
 echo aaa1a2a | $awk 1 RS='^a' >foo1
 cat << \EOF > foo2
--