diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | field.c | 5 | ||||
-rw-r--r-- | test/ChangeLog | 5 | ||||
-rw-r--r-- | test/Makefile.am | 5 | ||||
-rw-r--r-- | test/Makefile.in | 10 | ||||
-rw-r--r-- | test/Maketests | 5 | ||||
-rw-r--r-- | test/fpat5.awk | 8 | ||||
-rw-r--r-- | test/fpat5.in | 1 | ||||
-rw-r--r-- | test/fpat5.ok | 1 |
9 files changed, 42 insertions, 5 deletions
@@ -1,3 +1,10 @@ +2015-09-18 Arnold D. Robbins <arnold@skeeve.com> + + * field.c (fpat_parse_field): Always use rp->non_empty instead + of only if in_middle. The latter can be true even if we've + already parsed part of the record. Thanks to Ed Morton + for the bug report. + 2015-09-04 Arnold D. Robbins <arnold@skeeve.com> * profile.c (pp_num): Use format_val to print integral values @@ -1521,9 +1521,8 @@ fpat_parse_field(long up_to, /* parse only up to this field number */ if (in_middle) { regex_flags |= RE_NO_BOL; - non_empty = rp->non_empty; - } else - non_empty = false; + } + non_empty = rp->non_empty; eosflag = false; need_to_set_sep = true; diff --git a/test/ChangeLog b/test/ChangeLog index 6df641be..49b64cbd 100644 --- a/test/ChangeLog +++ b/test/ChangeLog @@ -1,3 +1,8 @@ +2015-09-18 Arnold D. Robbins <arnold@skeeve.com> + + * Makefile.am (fpat5): New test. + * fpat5.awk, fpat5.in, fpat5.ok: New files. + 2015-09-04 Arnold D. Robbins <arnold@skeeve.com> * profile.ok: Updated after code change. diff --git a/test/Makefile.am b/test/Makefile.am index 68fd709f..db842fb4 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -302,6 +302,9 @@ EXTRA_DIST = \ fpat3.ok \ fpat4.awk \ fpat4.ok \ + fpat5.awk \ + fpat5.in \ + fpat5.ok \ fpatnull.awk \ fpatnull.in \ fpatnull.ok \ @@ -1103,7 +1106,7 @@ GAWK_EXT_TESTS = \ backw badargs beginfile1 beginfile2 binmode1 charasbytes \ colonwarn clos1way crlf dbugeval dbugeval2 dbugtypedre1 dbugtypedre2 delsub \ devfd devfd1 devfd2 dumpvars errno exit \ - fieldwdth fpat1 fpat2 fpat3 fpat4 fpatnull fsfwfs funlen \ + fieldwdth fpat1 fpat2 fpat3 fpat4 fpat5 fpatnull fsfwfs funlen \ functab1 functab2 functab3 fwtest fwtest2 fwtest3 \ genpot gensub gensub2 getlndir gnuops2 gnuops3 gnureops gsubind \ icasefs icasers id igncdym igncfs ignrcas2 ignrcase \ diff --git a/test/Makefile.in b/test/Makefile.in index 1fe8da66..c140d966 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -559,6 +559,9 @@ EXTRA_DIST = \ fpat3.ok \ fpat4.awk \ fpat4.ok \ + fpat5.awk \ + fpat5.in \ + fpat5.ok \ fpatnull.awk \ fpatnull.in \ fpatnull.ok \ @@ -1359,7 +1362,7 @@ GAWK_EXT_TESTS = \ backw badargs beginfile1 beginfile2 binmode1 charasbytes \ colonwarn clos1way crlf dbugeval dbugeval2 dbugtypedre1 dbugtypedre2 delsub \ devfd devfd1 devfd2 dumpvars errno exit \ - fieldwdth fpat1 fpat2 fpat3 fpat4 fpatnull fsfwfs funlen \ + fieldwdth fpat1 fpat2 fpat3 fpat4 fpat5 fpatnull fsfwfs funlen \ functab1 functab2 functab3 fwtest fwtest2 fwtest3 \ genpot gensub gensub2 getlndir gnuops2 gnuops3 gnureops gsubind \ icasefs icasers id igncdym igncfs ignrcas2 ignrcase \ @@ -3624,6 +3627,11 @@ fpat4: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +fpat5: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + fpatnull: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ diff --git a/test/Maketests b/test/Maketests index f9dee6d8..cc00b085 100644 --- a/test/Maketests +++ b/test/Maketests @@ -1017,6 +1017,11 @@ fpat4: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +fpat5: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + fpatnull: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ diff --git a/test/fpat5.awk b/test/fpat5.awk new file mode 100644 index 00000000..b508f068 --- /dev/null +++ b/test/fpat5.awk @@ -0,0 +1,8 @@ +BEGIN { + FPAT = "([^,]*)|(\"[^\"]+\")" + OFS = ";" +} + +p != 0 { print NF } + +{ $1 = $1 ; print } diff --git a/test/fpat5.in b/test/fpat5.in new file mode 100644 index 00000000..15d874ef --- /dev/null +++ b/test/fpat5.in @@ -0,0 +1 @@ +"A","B","C" diff --git a/test/fpat5.ok b/test/fpat5.ok new file mode 100644 index 00000000..cc9295ce --- /dev/null +++ b/test/fpat5.ok @@ -0,0 +1 @@ +"A";"B";"C" |