diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2014-01-14 22:17:04 +0200 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2014-01-14 22:17:04 +0200 |
commit | c338576a8fefa700cb989319d10d27f6f31e9b00 (patch) | |
tree | cbc1751f4f8088fcb0124bd5c994af2a035e39d2 | |
parent | 2389064eb3fe7c5b2b144eb2f5d556a812ba1911 (diff) | |
download | egawk-c338576a8fefa700cb989319d10d27f6f31e9b00.tar.gz egawk-c338576a8fefa700cb989319d10d27f6f31e9b00.tar.bz2 egawk-c338576a8fefa700cb989319d10d27f6f31e9b00.zip |
Bug fix to do_split().
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | field.c | 4 | ||||
-rw-r--r-- | test/ChangeLog | 6 | ||||
-rw-r--r-- | test/Makefile.am | 8 | ||||
-rw-r--r-- | test/Makefile.in | 13 | ||||
-rw-r--r-- | test/Maketests | 5 | ||||
-rw-r--r-- | test/split_after_fpat.awk | 11 | ||||
-rw-r--r-- | test/split_after_fpat.in | 1 | ||||
-rw-r--r-- | test/split_after_fpat.ok | 4 |
9 files changed, 53 insertions, 5 deletions
@@ -1,3 +1,9 @@ +2014-01-14 Arnold D. Robbins <arnold@skeeve.com> + + * field.c (do_split): Make sure split() gets FS value if no + third arg even after FPAT was set. Thanks to Janis Papanagnou + for the report. + 2014-01-13 Arnold D. Robbins <arnold@skeeve.com> * README: Fix John Malmberg's email address. @@ -1013,7 +1013,9 @@ do_split(int nargs) return make_number((AWKNUM) 0); } - if ((sep->re_flags & FS_DFLT) != 0 && current_field_sep() != Using_FIELDWIDTHS && ! RS_is_null) { + if ( (sep->re_flags & FS_DFLT) != 0 + && current_field_sep() == Using_FS + && ! RS_is_null) { parseit = parse_field; fs = force_string(FS_node->var_value); rp = FS_regexp; diff --git a/test/ChangeLog b/test/ChangeLog index 81fed7c8..b5ff6e64 100644 --- a/test/ChangeLog +++ b/test/ChangeLog @@ -1,3 +1,9 @@ +2014-01-14 Arnold D. Robbins <arnold@skeeve.com> + + * Makefile.am (split_after_fpat): New test. + * split_after_fpat.awk, split_after_fpat.ok, + split_after_fpat.in: New files. + 2013-12-30 Arnold D. Robbins <arnold@skeeve.com> * Makefile.am (ignrcas2): Change to use en_US.UTF-8; it diff --git a/test/Makefile.am b/test/Makefile.am index 371a13ea..e6dfea17 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -1,7 +1,7 @@ # # test/Makefile.am --- automake input file for gawk # -# Copyright (C) 1988-2012 the Free Software Foundation, Inc. +# Copyright (C) 1988-2014 the Free Software Foundation, Inc. # # This file is part of GAWK, the GNU implementation of the # AWK Programming Language. @@ -806,6 +806,9 @@ EXTRA_DIST = \ sortu.awk \ sortu.ok \ space.ok \ + split_after_fpat.awk \ + split_after_fpat.in \ + split_after_fpat.ok \ splitarg4.awk \ splitarg4.in \ splitarg4.ok \ @@ -993,7 +996,8 @@ GAWK_EXT_TESTS = \ patsplit posix printfbad1 printfbad2 printfbad3 procinfs \ profile1 profile2 profile3 profile4 profile5 pty1 \ rebuf regx8bit reginttrad reint reint2 rsstart1 \ - rsstart2 rsstart3 rstest6 shadow sortfor sortu splitarg4 strftime \ + rsstart2 rsstart3 rstest6 shadow sortfor sortu split_after_fpat \ + splitarg4 strftime \ strtonum switch2 symtab1 symtab2 symtab3 symtab4 symtab5 symtab6 \ symtab7 symtab8 symtab9 diff --git a/test/Makefile.in b/test/Makefile.in index c2efe1ed..8fe395ef 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -17,7 +17,7 @@ # # test/Makefile.am --- automake input file for gawk # -# Copyright (C) 1988-2012 the Free Software Foundation, Inc. +# Copyright (C) 1988-2014 the Free Software Foundation, Inc. # # This file is part of GAWK, the GNU implementation of the # AWK Programming Language. @@ -1052,6 +1052,9 @@ EXTRA_DIST = \ sortu.awk \ sortu.ok \ space.ok \ + split_after_fpat.awk \ + split_after_fpat.in \ + split_after_fpat.ok \ splitarg4.awk \ splitarg4.in \ splitarg4.ok \ @@ -1238,7 +1241,8 @@ GAWK_EXT_TESTS = \ patsplit posix printfbad1 printfbad2 printfbad3 procinfs \ profile1 profile2 profile3 profile4 profile5 pty1 \ rebuf regx8bit reginttrad reint reint2 rsstart1 \ - rsstart2 rsstart3 rstest6 shadow sortfor sortu splitarg4 strftime \ + rsstart2 rsstart3 rstest6 shadow sortfor sortu split_after_fpat \ + splitarg4 strftime \ strtonum switch2 symtab1 symtab2 symtab3 symtab4 symtab5 symtab6 \ symtab7 symtab8 symtab9 @@ -3497,6 +3501,11 @@ sortu: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +split_after_fpat: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + splitarg4: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ diff --git a/test/Maketests b/test/Maketests index df272ce8..b9b713c4 100644 --- a/test/Maketests +++ b/test/Maketests @@ -1182,6 +1182,11 @@ sortu: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +split_after_fpat: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + splitarg4: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ diff --git a/test/split_after_fpat.awk b/test/split_after_fpat.awk new file mode 100644 index 00000000..7e7cfd99 --- /dev/null +++ b/test/split_after_fpat.awk @@ -0,0 +1,11 @@ +BEGIN { FPAT = "\"[^\"]*\"" } + +{ print $1 } + +END { f("hi there") } + +function f (p, a, n, i) +{ + n = split(p,a) + print n ; for (i=1; i<=n; i++) print a[i] +} diff --git a/test/split_after_fpat.in b/test/split_after_fpat.in new file mode 100644 index 00000000..1aeefd59 --- /dev/null +++ b/test/split_after_fpat.in @@ -0,0 +1 @@ +a"stuff"b diff --git a/test/split_after_fpat.ok b/test/split_after_fpat.ok new file mode 100644 index 00000000..5c284490 --- /dev/null +++ b/test/split_after_fpat.ok @@ -0,0 +1,4 @@ +"stuff" +2 +hi +there |