diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | field.c | 3 | ||||
-rw-r--r-- | test/ChangeLog | 4 | ||||
-rw-r--r-- | test/fpat1.awk | 15 | ||||
-rw-r--r-- | test/fpat1.ok | 9 |
5 files changed, 33 insertions, 4 deletions
@@ -1,3 +1,9 @@ +Sun Jun 5 21:39:17 2011 Arnold D. Robbins <arnold@skeeve.com> + + * field.c (fpat_parse_field): Bug fix. Thanks to + "Radoulov, Dimitre" <cichomitiko@gmail.com> for pointing + out the problem. + Fri Jun 3 10:39:17 2011 Arnold D. Robbins <arnold@skeeve.com> * regcomp.c (build_range_exp): Make syntax the first argument, @@ -892,7 +892,7 @@ get_field(long requested, Func_ptr *assign) char *rec_end = fields_arr[0]->stptr + fields_arr[0]->stlen; if ( parse_extent > rec_end - || (parse_extent > rec_start && parse_extent < rec_end)) + || (parse_extent > rec_start && parse_extent < rec_end && requested == UNLIMITED-1)) NF = parse_high_water; else if (parse_extent == rec_start) /* could be no match for FPAT */ NF = 0; @@ -1601,7 +1601,6 @@ fpat_parse_field(long up_to, /* parse only up to this field number */ start = scan; while (research(rp, scan, 0, (end - scan), regex_flags) != -1 && nf < up_to) { - regex_flags |= RE_NO_BOL; if (REEND(rp, scan) > RESTART(rp, scan)) { /* if (RLENGTH > 0) */ non_empty = TRUE; diff --git a/test/ChangeLog b/test/ChangeLog index 764fd90d..96962f3c 100644 --- a/test/ChangeLog +++ b/test/ChangeLog @@ -1,3 +1,7 @@ +Sun Jun 5 21:45:27 2011 Arnold D. Robbins <arnold@skeeve.com> + + * fpat1.ok, fpat1.in: Updated to test things better. + Tue May 31 22:50:28 2011 Arnold D. Robbins <arnold@skeeve.com> * regrange.awk, regrange.ok: New files. diff --git a/test/fpat1.awk b/test/fpat1.awk index b091625a..60c6bca6 100644 --- a/test/fpat1.awk +++ b/test/fpat1.awk @@ -1,8 +1,19 @@ BEGIN { # if (t == 0) -# FPAT = "([^,]+)|(\"[^\"]+\")" + FPAT = "([^,]+)|(\"[^\"]+\")" # else - FPAT = "([^,]*)|(\"[^\"]+\")" +# FPAT = "([^,]*)|(\"[^\"]+\")" +} +FNR == 1 { + # This part was added later + print $1 + print $1, $3 + for (i = 1; i <= NF; i++) + print i, $i + + # Reset for original part of test + FPAT = "([^,]*)|(\"[^\"]+\")" + $0 = $0 } { print "NF =", NF diff --git a/test/fpat1.ok b/test/fpat1.ok index e478aa53..c5888e3f 100644 --- a/test/fpat1.ok +++ b/test/fpat1.ok @@ -1,3 +1,12 @@ +Robbins +Robbins "1234 A Pretty Place, NE" +1 Robbins +2 Arnold +3 "1234 A Pretty Place, NE" +4 Sometown +5 NY +6 12345-6789 +7 USA NF = 7 $1 = <Robbins> $2 = <Arnold> |