diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | field.c | 6 | ||||
-rw-r--r-- | test/ChangeLog | 5 | ||||
-rw-r--r-- | test/Makefile.am | 7 | ||||
-rw-r--r-- | test/Makefile.in | 17 | ||||
-rw-r--r-- | test/Maketests | 5 |
6 files changed, 39 insertions, 9 deletions
@@ -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> @@ -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: $$? >>_$@ |