aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--field.c3
-rw-r--r--test/ChangeLog4
-rw-r--r--test/fpat1.awk15
-rw-r--r--test/fpat1.ok9
5 files changed, 33 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index b9bd790e..7c46fde3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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,
diff --git a/field.c b/field.c
index 151fea68..0b9c1008 100644
--- a/field.c
+++ b/field.c
@@ -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>