aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--field.c6
-rw-r--r--test/ChangeLog5
-rw-r--r--test/Makefile.am7
-rw-r--r--test/Makefile.in17
-rw-r--r--test/Maketests5
6 files changed, 39 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index 08a2226d..15d6e246 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2020-04-02 Arnold D. Robbins <arnold@skeeve.com>
+
+ * field.c (re_parse_field): If default parsing and trailing
+ whitespace, don't set a null field at the end. Thanks to
+ Ed Morton <mortoneccc@comcast.net> for the report.
+
2020-03-18 Arnold D. Robbins <arnold@skeeve.com>
* TODO: Add more stuff.
@@ -179,7 +185,7 @@
2019-11-03 Arnold D. Robbins <arnold@skeeve.com>
* field.c (get_field): Remove special case code for fpat_parse_field.
- Fixes a bug reported by Ed Morton <mortoneccc@comcast.net.
+ Fixes a bug reported by Ed Morton <mortoneccc@comcast.net>.
2019-10-19 Arnold D. Robbins <arnold@skeeve.com>
diff --git a/field.c b/field.c
index efbc7092..80495862 100644
--- a/field.c
+++ b/field.c
@@ -463,7 +463,9 @@ re_parse_field(long up_to, /* parse only up to this field number */
if (len == 0)
return nf;
- if (RS_is_null && default_FS) {
+ bool default_field_splitting = (RS_is_null && default_FS);
+
+ if (default_field_splitting) {
sep = scan;
while (scan < end && (*scan == ' ' || *scan == '\t' || *scan == '\n'))
scan++;
@@ -504,7 +506,7 @@ re_parse_field(long up_to, /* parse only up to this field number */
(long) (REEND(rp, scan) - RESTART(rp, scan)), sep_arr);
scan += REEND(rp, scan);
field = scan;
- if (scan == end) /* FS at end of record */
+ if (scan == end && ! default_field_splitting) /* FS at end of record */
(*set)(++nf, field, 0L, n);
}
if (nf != up_to && scan < end) {
diff --git a/test/ChangeLog b/test/ChangeLog
index 8806976b..de6e4427 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,8 @@
+2020-04-02 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (EXTRA_DIST): New test, rsnulw.
+ * rsnulw.awk, rsnulw.in, rsnulw.ok: New files.
+
2020-03-18 Arnold D. Robbins <arnold@skeeve.com>
* Makefile.am (zos-diffout): Change per request from
diff --git a/test/Makefile.am b/test/Makefile.am
index 1092a7e8..1465c70d 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -1063,6 +1063,9 @@ EXTRA_DIST = \
rsnul1nl.ok \
rsnulbig.ok \
rsnulbig2.ok \
+ rsnulw.awk \
+ rsnulw.in \
+ rsnulw.ok \
rsstart1.awk \
rsstart1.in \
rsstart1.ok \
@@ -1359,8 +1362,8 @@ BASIC_TESTS = \
printf1 printfchar prmarscl prmreuse prt1eval prtoeval \
rand randtest range1 range2 readbuf rebrackloc rebt8b1 rebuild redfilnm regeq \
regexpbrack regexpbrack2 regexprange regrange reindops reparse resplit \
- rri1 rs rscompat rsnul1nl rsnulbig rsnulbig2 rstest1 rstest2 rstest3 \
- rstest4 rstest5 rswhite \
+ rri1 rs rscompat rsnul1nl rsnulbig rsnulbig2 rsnulw \
+ rstest1 rstest2 rstest3 rstest4 rstest5 rswhite \
scalar sclforin sclifin setrec0 setrec1 \
sigpipe1 sortempty sortglos spacere splitargv splitarr \
splitdef splitvar splitwht status-close strcat1 strnum1 strnum2 strtod \
diff --git a/test/Makefile.in b/test/Makefile.in
index 20033e2c..c7a39cb2 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.2 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -274,6 +274,7 @@ pkgextensiondir = @pkgextensiondir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
@@ -1323,6 +1324,9 @@ EXTRA_DIST = \
rsnul1nl.ok \
rsnulbig.ok \
rsnulbig2.ok \
+ rsnulw.awk \
+ rsnulw.in \
+ rsnulw.ok \
rsstart1.awk \
rsstart1.in \
rsstart1.ok \
@@ -1619,8 +1623,8 @@ BASIC_TESTS = \
printf1 printfchar prmarscl prmreuse prt1eval prtoeval \
rand randtest range1 range2 readbuf rebrackloc rebt8b1 rebuild redfilnm regeq \
regexpbrack regexpbrack2 regexprange regrange reindops reparse resplit \
- rri1 rs rscompat rsnul1nl rsnulbig rsnulbig2 rstest1 rstest2 rstest3 \
- rstest4 rstest5 rswhite \
+ rri1 rs rscompat rsnul1nl rsnulbig rsnulbig2 rsnulw \
+ rstest1 rstest2 rstest3 rstest4 rstest5 rswhite \
scalar sclforin sclifin setrec0 setrec1 \
sigpipe1 sortempty sortglos spacere splitargv splitarr \
splitdef splitvar splitwht status-close strcat1 strnum1 strnum2 strtod \
@@ -3811,6 +3815,11 @@ rsnul1nl:
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+rsnulw:
+ @echo $@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
rstest1:
@echo $@
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
diff --git a/test/Maketests b/test/Maketests
index 13063cd0..01934096 100644
--- a/test/Maketests
+++ b/test/Maketests
@@ -952,6 +952,11 @@ rsnul1nl:
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+rsnulw:
+ @echo $@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
rstest1:
@echo $@
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@