aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--field.c1
-rw-r--r--test/ChangeLog5
-rw-r--r--test/Makefile.am7
-rw-r--r--test/Makefile.in12
-rw-r--r--test/Maketests5
-rw-r--r--test/fscaret.awk8
-rw-r--r--test/fscaret.in1
-rw-r--r--test/fscaret.ok1
9 files changed, 39 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index e8b37e3e..8ca1e095 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,9 @@
2019-04-21 Arnold D. Robbins <arnold@skeeve.com>
* POSIX.STD: Updated.
+ * field.c (get_field): If NF == -1, check parse high water to
+ set in_middle correctly. Thanks to <oguzismailuysal@gmail.com>
+ for the report.
2019-04-18 Arnold D. Robbins <arnold@skeeve.com>
diff --git a/field.c b/field.c
index d8bb52b7..6502b2fa 100644
--- a/field.c
+++ b/field.c
@@ -855,6 +855,7 @@ get_field(long requested, Func_ptr *assign)
if (! field0_valid) {
/* first, parse remainder of input record */
if (NF == -1) {
+ in_middle = (parse_high_water != 0);
NF = (*parse_field)(UNLIMITED - 1, &parse_extent,
fields_arr[0]->stlen -
(parse_extent - fields_arr[0]->stptr),
diff --git a/test/ChangeLog b/test/ChangeLog
index a6398975..726ac262 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,8 @@
+2019-04-21 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (EXTRA_DIST): New test: fscaret.
+ * fscaret.awk, fscaret.in, fscaret.ok: New files.
+
2019-04-18 Arnold D. Robbins <arnold@skeeve.com>
* Makefile.am (EXTRA_DIST): Add ChangeLog.1 to the list. Ooops.
diff --git a/test/Makefile.am b/test/Makefile.am
index 8c794d62..1ca9ba0c 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -367,6 +367,9 @@ EXTRA_DIST = \
fsbs.awk \
fsbs.in \
fsbs.ok \
+ fscaret.awk \
+ fscaret.in \
+ fscaret.ok \
fsfwfs.awk \
fsfwfs.in \
fsfwfs.ok \
@@ -1289,8 +1292,8 @@ BASIC_TESTS = \
datanonl defref delargv delarpm2 delarprm delfunc dfamb1 dfastress dynlj \
eofsplit eofsrc1 exit2 exitval1 exitval2 exitval3 \
fcall_exit fcall_exit2 fldchg fldchgnf fldterm fnamedat fnarray fnarray2 \
- fnaryscl fnasgnm fnmisc fordel forref forsimp fsbs fsnul1 fsrs fsspcoln \
- fstabplus funsemnl funsmnam funstack \
+ fnaryscl fnasgnm fnmisc fordel forref forsimp fsbs fscaret fsnul1 \
+ fsrs fsspcoln fstabplus funsemnl funsmnam funstack \
getline getline2 getline3 getline4 getline5 getlnbuf getnr2tb getnr2tm \
gsubasgn gsubtest gsubtst2 gsubtst3 gsubtst4 gsubtst5 gsubtst6 gsubtst7 \
gsubtst8 \
diff --git a/test/Makefile.in b/test/Makefile.in
index ee821c9a..5eb79abe 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -626,6 +626,9 @@ EXTRA_DIST = \
fsbs.awk \
fsbs.in \
fsbs.ok \
+ fscaret.awk \
+ fscaret.in \
+ fscaret.ok \
fsfwfs.awk \
fsfwfs.in \
fsfwfs.ok \
@@ -1548,8 +1551,8 @@ BASIC_TESTS = \
datanonl defref delargv delarpm2 delarprm delfunc dfamb1 dfastress dynlj \
eofsplit eofsrc1 exit2 exitval1 exitval2 exitval3 \
fcall_exit fcall_exit2 fldchg fldchgnf fldterm fnamedat fnarray fnarray2 \
- fnaryscl fnasgnm fnmisc fordel forref forsimp fsbs fsnul1 fsrs fsspcoln \
- fstabplus funsemnl funsmnam funstack \
+ fnaryscl fnasgnm fnmisc fordel forref forsimp fsbs fscaret fsnul1 \
+ fsrs fsspcoln fstabplus funsemnl funsmnam funstack \
getline getline2 getline3 getline4 getline5 getlnbuf getnr2tb getnr2tm \
gsubasgn gsubtest gsubtst2 gsubtst3 gsubtst4 gsubtst5 gsubtst6 gsubtst7 \
gsubtst8 \
@@ -3101,6 +3104,11 @@ fsbs:
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+fscaret:
+ @echo $@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
fsnul1:
@echo $@
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
diff --git a/test/Maketests b/test/Maketests
index dadba2ee..1de780ec 100644
--- a/test/Maketests
+++ b/test/Maketests
@@ -362,6 +362,11 @@ fsbs:
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+fscaret:
+ @echo $@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
fsnul1:
@echo $@
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
diff --git a/test/fscaret.awk b/test/fscaret.awk
new file mode 100644
index 00000000..134820d7
--- /dev/null
+++ b/test/fscaret.awk
@@ -0,0 +1,8 @@
+BEGIN {
+ FS="^."
+ OFS="|"
+}
+{
+ $1 = $1
+}
+1
diff --git a/test/fscaret.in b/test/fscaret.in
new file mode 100644
index 00000000..257cc564
--- /dev/null
+++ b/test/fscaret.in
@@ -0,0 +1 @@
+foo
diff --git a/test/fscaret.ok b/test/fscaret.ok
new file mode 100644
index 00000000..38287d58
--- /dev/null
+++ b/test/fscaret.ok
@@ -0,0 +1 @@
+|oo