136 lines
4.2 KiB
Diff
136 lines
4.2 KiB
Diff
|
|
From 435c438649584eb00de06e07faf6827d4bb6f9fc Mon Sep 17 00:00:00 2001
|
||
|
|
From: "Arnold D. Robbins" <arnold@skeeve.com>
|
||
|
|
Date: Sun, 21 Apr 2019 15:01:03 +0300
|
||
|
|
Subject: [PATCH] Fix bug with ^ in FS.
|
||
|
|
|
||
|
|
---
|
||
|
|
field.c | 1 +
|
||
|
|
test/Makefile.am | 5 ++++-
|
||
|
|
test/Makefile.in | 10 +++++++++-
|
||
|
|
test/Maketests | 5 +++++
|
||
|
|
test/fscaret.awk | 8 ++++++++
|
||
|
|
test/fscaret.in | 1 +
|
||
|
|
test/fscaret.ok | 1 +
|
||
|
|
7 files changed, 29 insertions(+), 2 deletions(-)
|
||
|
|
create mode 100644 test/fscaret.awk
|
||
|
|
create mode 100644 test/fscaret.in
|
||
|
|
create mode 100644 test/fscaret.ok
|
||
|
|
|
||
|
|
diff --git a/field.c b/field.c
|
||
|
|
index 52963249..f6a3241c 100644
|
||
|
|
--- a/field.c
|
||
|
|
+++ b/field.c
|
||
|
|
@@ -840,6 +840,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/Makefile.am b/test/Makefile.am
|
||
|
|
index f5546067..13f53f95 100644
|
||
|
|
--- a/test/Makefile.am
|
||
|
|
+++ b/test/Makefile.am
|
||
|
|
@@ -350,6 +350,9 @@ EXTRA_DIST = \
|
||
|
|
fsbs.awk \
|
||
|
|
fsbs.in \
|
||
|
|
fsbs.ok \
|
||
|
|
+ fscaret.awk \
|
||
|
|
+ fscaret.in \
|
||
|
|
+ fscaret.ok \
|
||
|
|
fsfwfs.awk \
|
||
|
|
fsfwfs.in \
|
||
|
|
fsfwfs.ok \
|
||
|
|
@@ -1234,7 +1237,7 @@ BASIC_TESTS = \
|
||
|
|
datanonl defref delargv delarpm2 delarprm delfunc dfamb1 dfastress dynlj \
|
||
|
|
eofsplit 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 \
|
||
|
|
+ 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 \
|
||
|
|
diff --git a/test/Makefile.in b/test/Makefile.in
|
||
|
|
index 4133b58a..b23bd8ea 100644
|
||
|
|
--- a/test/Makefile.in
|
||
|
|
+++ b/test/Makefile.in
|
||
|
|
@@ -608,6 +608,9 @@ EXTRA_DIST = \
|
||
|
|
fsbs.awk \
|
||
|
|
fsbs.in \
|
||
|
|
fsbs.ok \
|
||
|
|
+ fscaret.awk \
|
||
|
|
+ fscaret.in \
|
||
|
|
+ fscaret.ok \
|
||
|
|
fsfwfs.awk \
|
||
|
|
fsfwfs.in \
|
||
|
|
fsfwfs.ok \
|
||
|
|
@@ -1491,7 +1494,7 @@ BASIC_TESTS = \
|
||
|
|
datanonl defref delargv delarpm2 delarprm delfunc dfamb1 dfastress dynlj \
|
||
|
|
eofsplit 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 \
|
||
|
|
+ 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 \
|
||
|
|
@@ -3279,6 +3282,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 4a90e3e9..f5840e5f 100644
|
||
|
|
--- a/test/Maketests
|
||
|
|
+++ b/test/Maketests
|
||
|
|
@@ -345,6 +345,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
|
||
|
|
--
|
||
|
|
2.19.1
|
||
|
|
|