From 50f617427403434dcca156fb081c1bdc7eb714b7 Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Tue, 17 Apr 2018 15:44:57 +0300 Subject: [PATCH] Fix problem with rebuilding records if using API parser. --- field.c | 5 +++++ test/Makefile.am | 10 +++++++++- test/Makefile.in | 10 +++++++++- test/readdir_retest.awk | 7 +++++++ 4 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 test/readdir_retest.awk diff --git a/field.c b/field.c index 0d7e633..5296324 100644 --- a/field.c +++ b/field.c @@ -338,6 +338,11 @@ reset_record() { fields_arr[0] = force_string(fields_arr[0]); purge_record(); + if (api_parser_override) { + api_parser_override = false; + parse_field = normal_parse_field; + update_PROCINFO_str("FS", current_field_sep_str()); + } } static void diff --git a/test/Makefile.am b/test/Makefile.am index 93a6ee5..f554606 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -906,6 +906,7 @@ EXTRA_DIST = \ readbuf.ok \ readdir.awk \ readdir0.awk \ + readdir_retest.awk \ readfile2.awk \ readfile2.ok \ rebrackloc.awk \ @@ -1321,7 +1322,7 @@ SHLIB_TESTS = \ getfile \ inplace1 inplace2 inplace3 \ ordchr ordchr2 \ - readdir readdir_test readfile readfile2 revout \ + readdir readdir_test readdir_retest readfile readfile2 revout \ revtwoway rwarray \ testext time @@ -2279,6 +2280,12 @@ readdir_test: @$(AWK) -lreaddir_test '{printf "[%s] [%s] [%s] [%s]\n", $$1, $$2, $$3, $$4}' "$(top_srcdir)" > _$@ @-$(CMP) $@.ok _$@ && rm -f $@.ok _$@ +readdir_retest: + @echo $@ + @$(AWK) -lreaddir -F/ -f $@.awk "$(top_srcdir)" > $@.ok + @$(AWK) -lreaddir_test -F/ -f $@.awk "$(top_srcdir)" > _$@ + @-$(CMP) $@.ok _$@ && rm -f $@.ok _$@ + fts: @case `uname` in \ IRIX) \ @@ -2500,6 +2507,7 @@ Maketests: $(srcdir)/Makefile.am $(srcdir)/Gentests clean-local: rm -fr _* core core.* fmtspcl.ok junk strftime.ok test1 test2 \ seq *~ readfile.ok fork.tmp.* testext.awk fts.ok readdir.ok \ + readdir_test.ok readdir_retest.ok \ mmap8k.ok profile1.ok # An attempt to print something that can be grepped for in build logs diff --git a/test/Makefile.in b/test/Makefile.in index 2358988..4133b58 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -1164,6 +1164,7 @@ EXTRA_DIST = \ readbuf.ok \ readdir.awk \ readdir0.awk \ + readdir_retest.awk \ readfile2.awk \ readfile2.ok \ rebrackloc.awk \ @@ -1574,7 +1575,7 @@ SHLIB_TESTS = \ getfile \ inplace1 inplace2 inplace3 \ ordchr ordchr2 \ - readdir readdir_test readfile readfile2 revout \ + readdir readdir_test readdir_retest readfile readfile2 revout \ revtwoway rwarray \ testext time @@ -2719,6 +2720,12 @@ readdir_test: @$(AWK) -lreaddir_test '{printf "[%s] [%s] [%s] [%s]\n", $$1, $$2, $$3, $$4}' "$(top_srcdir)" > _$@ @-$(CMP) $@.ok _$@ && rm -f $@.ok _$@ +readdir_retest: + @echo $@ + @$(AWK) -lreaddir -F/ -f $@.awk "$(top_srcdir)" > $@.ok + @$(AWK) -lreaddir_test -F/ -f $@.awk "$(top_srcdir)" > _$@ + @-$(CMP) $@.ok _$@ && rm -f $@.ok _$@ + fts: @case `uname` in \ IRIX) \ @@ -4654,6 +4661,7 @@ Maketests: $(srcdir)/Makefile.am $(srcdir)/Gentests clean-local: rm -fr _* core core.* fmtspcl.ok junk strftime.ok test1 test2 \ seq *~ readfile.ok fork.tmp.* testext.awk fts.ok readdir.ok \ + readdir_test.ok readdir_retest.ok \ mmap8k.ok profile1.ok # An attempt to print something that can be grepped for in build logs diff --git a/test/readdir_retest.awk b/test/readdir_retest.awk new file mode 100644 index 0000000..079a993 --- /dev/null +++ b/test/readdir_retest.awk @@ -0,0 +1,7 @@ +# Test field values after reparsing +FNR == 1 { record1 = $0 } +{ + printf "[%s] [%s] [%s] [%s]\n", $1, $2, $3, $4 + $0 = record1 + printf "[%s] [%s] [%s] [%s]\n", $1, $2, $3, $4 +} -- 2.14.4