diff options
author | ozan yigit <ozan.yigit@gmail.com> | 2021-07-24 15:10:25 -0400 |
---|---|---|
committer | ozan yigit <ozan.yigit@gmail.com> | 2021-07-24 15:10:25 -0400 |
commit | 39133291204ab182e6fd24baacab0bb3a3f86606 (patch) | |
tree | d3ddae72e80e5e5692c36b096d722c723c976345 | |
parent | 30fb6ef0da1f33473637a711381b58961331dc5f (diff) | |
parent | 92f9e8a9be1e6ded911f66c5cb81f28093c5450e (diff) | |
download | one-true-awk-39133291204ab182e6fd24baacab0bb3a3f86606.tar.gz |
Merge branch 'fix-readrec' of https://github.com/mpinjr/awk into staging
-rw-r--r-- | lib.c | 3 | ||||
-rwxr-xr-x | testdir/T.misc | 7 |
2 files changed, 9 insertions, 1 deletions
@@ -242,6 +242,7 @@ int readrec(char **pbuf, int *pbufsize, FILE *inf, bool newflag) /* read one rec } if (found) setptr(patbeg, '\0'); + isrec = (found == 0 && *buf == '\0') ? 0 : 1; } else { if ((sep = *rs) == 0) { sep = '\n'; @@ -271,10 +272,10 @@ int readrec(char **pbuf, int *pbufsize, FILE *inf, bool newflag) /* read one rec 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; } diff --git a/testdir/T.misc b/testdir/T.misc index 77e6dd1..ad34ab8 100755 --- a/testdir/T.misc +++ b/testdir/T.misc @@ -186,6 +186,13 @@ BEGIN { RS = "" }' >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 |