aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2011-05-23 14:06:26 +0300
committerArnold D. Robbins <arnold@skeeve.com>2011-05-23 21:31:03 +0300
commit9c98c0b14bee310c5915a3ff17ac45cb566e7550 (patch)
treee81e6dbe4d80f71372390956ab75ffce5fc6c035
parentf3765fba6524654abd19f3be4772a4af32878a6d (diff)
downloadegawk-9c98c0b14bee310c5915a3ff17ac45cb566e7550.tar.gz
egawk-9c98c0b14bee310c5915a3ff17ac45cb566e7550.tar.bz2
egawk-9c98c0b14bee310c5915a3ff17ac45cb566e7550.zip
Bug fixes for FPAT.
-rw-r--r--ChangeLog7
-rw-r--r--field.c2
-rw-r--r--main.c2
-rw-r--r--test/ChangeLog9
-rw-r--r--test/Makefile.am9
-rw-r--r--test/Makefile.in14
-rw-r--r--test/Maketests5
-rw-r--r--test/dumpvars.ok2
-rw-r--r--test/fpatnull.awk2
-rw-r--r--test/fpatnull.in1
-rw-r--r--test/fpatnull.ok1
11 files changed, 45 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index da067310..cda26aba 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Sun May 22 11:56:40 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (varinit): Give FPAT a reasonable default value.
+ * field (get_field): Adjust test for at end of record to >=;
+ fpat_parse_field can go beyond when matching null regexps.
+ Thanks to Pat Rankin.
+
Fri May 20 11:00:17 2011 Arnold D. Robbins <arnold@skeeve.com>
* regex_internal.h (__attribute_warn_unused_result__): Always
diff --git a/field.c b/field.c
index 09e06e9d..8ede8744 100644
--- a/field.c
+++ b/field.c
@@ -884,7 +884,7 @@ get_field(long requested, Func_ptr *assign)
* reference to the field and NF only gets set if the field
* is assigned to -- this case is handled below
*/
- if (parse_extent == fields_arr[0]->stptr + fields_arr[0]->stlen)
+ if (parse_extent >= fields_arr[0]->stptr + fields_arr[0]->stlen)
NF = parse_high_water;
if (requested == UNLIMITED - 1) /* UNLIMITED-1 means set NF */
requested = parse_high_water;
diff --git a/main.c b/main.c
index 814a340f..034de705 100644
--- a/main.c
+++ b/main.c
@@ -924,7 +924,7 @@ static const struct varinit varinit[] = {
{&FILENAME_node, "FILENAME", "", 0, NULL, NULL, FALSE, 0 },
{&FNR_node, "FNR", NULL, 0, update_FNR, set_FNR, TRUE, 0 },
{&FS_node, "FS", " ", 0, NULL, set_FS, FALSE, 0 },
-{&FPAT_node, "FPAT", " ", 0, NULL, set_FPAT, FALSE, 0 },
+{&FPAT_node, "FPAT", "[^[:space:]]+", 0, NULL, set_FPAT, FALSE, 0 },
{&IGNORECASE_node, "IGNORECASE", NULL, 0, NULL, set_IGNORECASE, FALSE, NON_STANDARD },
{&LINT_node, "LINT", NULL, 0, NULL, set_LINT, FALSE, NON_STANDARD },
{&NF_node, "NF", NULL, -1, update_NF, set_NF, FALSE, 0 },
diff --git a/test/ChangeLog b/test/ChangeLog
index b9df4619..0d4be5f3 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,12 @@
+Mon May 23 14:03:15 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * fpatnull.awk, fpatnull.in, fpatnull.ok: New files.
+ * Makefile.am (fpatnull): New test.
+
+Sun May 22 11:58:58 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dumpvars.ok: Updated.
+
Thu May 19 16:56:31 2011 Arnold D. Robbins <arnold@skeeve.com>
* badargs.ok: Updated.
diff --git a/test/Makefile.am b/test/Makefile.am
index 0bf2bad5..fd34a059 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -226,6 +226,9 @@ EXTRA_DIST = \
fpat1.awk \
fpat1.in \
fpat1.ok \
+ fpatnull.awk \
+ fpatnull.in \
+ fpatnull.ok \
fordel.awk \
fordel.ok \
forref.awk \
@@ -781,9 +784,9 @@ UNIX_TESTS = \
GAWK_EXT_TESTS = \
aadelete1 aadelete2 aarray1 aasort aasorti argtest arraysort backw \
badargs beginfile1 binmode1 clos1way delsub devfd devfd1 devfd2 \
- dumpvars exit fieldwdth fpat1 fsfwfs funlen fwtest fwtest2 gensub \
- gensub2 getlndir gnuops2 gnuops3 gnureops icasefs icasers igncdym \
- igncfs ignrcas2 ignrcase indirectcall lint lintold lintwarn \
+ dumpvars exit fieldwdth fpat1 fpatnull fsfwfs funlen fwtest fwtest2 \
+ gensub gensub2 getlndir gnuops2 gnuops3 gnureops icasefs icasers \
+ igncdym igncfs ignrcas2 ignrcase indirectcall lint lintold lintwarn \
manyfiles match1 match2 match3 mbstr1 nastyparm next nondec nondec2 \
patsplit posix printfbad1 printfbad2 procinfs profile1 profile2 \
profile3 rebuf regx8bit reint reint2 rsstart1 rsstart2 rsstart3 \
diff --git a/test/Makefile.in b/test/Makefile.in
index 3662da8d..734f97a8 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -411,6 +411,9 @@ EXTRA_DIST = \
fpat1.awk \
fpat1.in \
fpat1.ok \
+ fpatnull.awk \
+ fpatnull.in \
+ fpatnull.ok \
fordel.awk \
fordel.ok \
forref.awk \
@@ -966,9 +969,9 @@ UNIX_TESTS = \
GAWK_EXT_TESTS = \
aadelete1 aadelete2 aarray1 aasort aasorti argtest arraysort backw \
badargs beginfile1 binmode1 clos1way delsub devfd devfd1 devfd2 \
- dumpvars exit fieldwdth fpat1 fsfwfs funlen fwtest fwtest2 gensub \
- gensub2 getlndir gnuops2 gnuops3 gnureops icasefs icasers igncdym \
- igncfs ignrcas2 ignrcase indirectcall lint lintold lintwarn \
+ dumpvars exit fieldwdth fpat1 fpatnull fsfwfs funlen fwtest fwtest2 \
+ gensub gensub2 getlndir gnuops2 gnuops3 gnureops icasefs icasers \
+ igncdym igncfs ignrcas2 ignrcase indirectcall lint lintold lintwarn \
manyfiles match1 match2 match3 mbstr1 nastyparm next nondec nondec2 \
patsplit posix printfbad1 printfbad2 procinfs profile1 profile2 \
profile3 rebuf regx8bit reint reint2 rsstart1 rsstart2 rsstart3 \
@@ -2621,6 +2624,11 @@ fpat1:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+fpatnull:
+ @echo fpatnull
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
fsfwfs:
@echo fsfwfs
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
diff --git a/test/Maketests b/test/Maketests
index 2c31422a..4e419a5c 100644
--- a/test/Maketests
+++ b/test/Maketests
@@ -905,6 +905,11 @@ fpat1:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+fpatnull:
+ @echo fpatnull
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
fsfwfs:
@echo fsfwfs
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
diff --git a/test/dumpvars.ok b/test/dumpvars.ok
index 361c2507..01d5fb78 100644
--- a/test/dumpvars.ok
+++ b/test/dumpvars.ok
@@ -7,7 +7,7 @@ ERRNO: ""
FIELDWIDTHS: ""
FILENAME: "-"
FNR: 3
-FPAT: " "
+FPAT: "[^[:space:]]+"
FS: " "
IGNORECASE: 0
LINT: 0
diff --git a/test/fpatnull.awk b/test/fpatnull.awk
new file mode 100644
index 00000000..1d00adf4
--- /dev/null
+++ b/test/fpatnull.awk
@@ -0,0 +1,2 @@
+BEGIN { FPAT = "" }
+{ print NF }
diff --git a/test/fpatnull.in b/test/fpatnull.in
new file mode 100644
index 00000000..4b5fa637
--- /dev/null
+++ b/test/fpatnull.in
@@ -0,0 +1 @@
+hello, world
diff --git a/test/fpatnull.ok b/test/fpatnull.ok
new file mode 100644
index 00000000..b1bd38b6
--- /dev/null
+++ b/test/fpatnull.ok
@@ -0,0 +1 @@
+13