aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog14
-rw-r--r--build-aux/ChangeLog4
-rwxr-xr-xbuild-aux/config.guess8
-rwxr-xr-xbuild-aux/config.rpath2
-rwxr-xr-xbuild-aux/config.sub10
-rw-r--r--builtin.c60
-rw-r--r--io.c2
-rw-r--r--pc/ChangeLog4
-rw-r--r--pc/Makefile.tst17
-rw-r--r--test/ChangeLog10
-rw-r--r--test/Makefile.am12
-rw-r--r--test/Makefile.in22
-rw-r--r--test/Maketests10
-rw-r--r--test/modifiers.ok12
-rwxr-xr-xtest/modifiers.sh8
-rw-r--r--test/rsnullre.awk5
-rw-r--r--test/rsnullre.in1
-rw-r--r--test/rsnullre.ok3
18 files changed, 142 insertions, 62 deletions
diff --git a/ChangeLog b/ChangeLog
index 4021454d..8d9a3930 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2021-01-07 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (format_tree): Generalize handling of invalid
+ format modifiers. Add support for three more letters. Thanks to
+ Arkadiusz Drabczyk <arkadiusz@drabczyk.org> for the report.
+
+ Unrelated:
+
+ * io.c (rsnullscan): Adjust loop test to get to end of string
+ when re match is null string. Thanks to Ed Morton
+ <mortoneccc@comcast.net> for the report.
+
2020-12-26 Arnold D. Robbins <arnold@skeeve.com>
* NEWS: Updated.
@@ -387,7 +399,7 @@
2020-06-08 Arnold D. Robbins <arnold@skeeve.com>
* awkgram.y: Fix `print $"2"' case. Thanks to Ed Morton
- Morton <mortoneccc@comcast.net> for the report.
+ <mortoneccc@comcast.net> for the report.
Unrelated:
diff --git a/build-aux/ChangeLog b/build-aux/ChangeLog
index 9c6e6253..0ef7838e 100644
--- a/build-aux/ChangeLog
+++ b/build-aux/ChangeLog
@@ -1,3 +1,7 @@
+2021-01-07 Arnold D. Robbins <arnold@skeeve.com>
+
+ * config.guess, config.rpath, config.sub: Updated from GNULIB.
+
2020-12-30 Arnold D. Robbins <arnold@skeeve.com>
* config.guess, config.sub: Updated from GNULIB.
diff --git a/build-aux/config.guess b/build-aux/config.guess
index 7f748177..f7727026 100755
--- a/build-aux/config.guess
+++ b/build-aux/config.guess
@@ -1,8 +1,8 @@
#! /bin/sh
# Attempt to guess a canonical system name.
-# Copyright 1992-2020 Free Software Foundation, Inc.
+# Copyright 1992-2021 Free Software Foundation, Inc.
-timestamp='2020-12-22'
+timestamp='2021-01-01'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -50,7 +50,7 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright 1992-2020 Free Software Foundation, Inc.
+Copyright 1992-2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -1087,7 +1087,7 @@ EOF
ppcle:Linux:*:*)
echo powerpcle-unknown-linux-"$LIBC"
exit ;;
- riscv32:Linux:*:* | riscv64:Linux:*:*)
+ riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*)
echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
s390:Linux:*:* | s390x:Linux:*:*)
diff --git a/build-aux/config.rpath b/build-aux/config.rpath
index 24be79cf..69988c5b 100755
--- a/build-aux/config.rpath
+++ b/build-aux/config.rpath
@@ -2,7 +2,7 @@
# Output a system dependent set of variables, describing how to set the
# run time search path of shared libraries in an executable.
#
-# Copyright 1996-2020 Free Software Foundation, Inc.
+# Copyright 1996-2021 Free Software Foundation, Inc.
# Taken from GNU libtool, 2001
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
#
diff --git a/build-aux/config.sub b/build-aux/config.sub
index 90bb8aed..b0f84923 100755
--- a/build-aux/config.sub
+++ b/build-aux/config.sub
@@ -1,8 +1,8 @@
#! /bin/sh
# Configuration validation subroutine script.
-# Copyright 1992-2020 Free Software Foundation, Inc.
+# Copyright 1992-2021 Free Software Foundation, Inc.
-timestamp='2020-12-22'
+timestamp='2021-01-07'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -67,7 +67,7 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
-Copyright 1992-2020 Free Software Foundation, Inc.
+Copyright 1992-2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -1230,7 +1230,7 @@ case $cpu-$vendor in
| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
| pru \
| pyramid \
- | riscv | riscv32 | riscv64 \
+ | riscv | riscv32 | riscv32be | riscv64 | riscv64be \
| rl78 | romp | rs6000 | rx \
| s390 | s390x \
| score \
@@ -1687,7 +1687,7 @@ case $os in
musl* | newlib* | uclibc*)
;;
# Likewise for "kernel-libc"
- eabi | eabihf | gnueabi | gnueabihf)
+ eabi* | gnueabi*)
;;
# Now accept the basic system types.
# The portable systems comes first.
diff --git a/builtin.c b/builtin.c
index 55c8878e..62cc2185 100644
--- a/builtin.c
+++ b/builtin.c
@@ -693,7 +693,7 @@ format_tree(
NODE *arg;
long fw, prec, argnum;
bool used_dollar;
- bool lj, alt, big_flag, bigbig_flag, small_flag, have_prec, need_format;
+ bool lj, alt, have_prec, need_format;
long *cur = NULL;
uintmax_t uval;
bool sgn;
@@ -735,6 +735,11 @@ format_tree(
static const char zero_string[] = "0";
static const char lchbuf[] = "0123456789abcdef";
static const char Uchbuf[] = "0123456789ABCDEF";
+ static const char bad_modifiers[] = "hjlLtz";
+ static bool warned[sizeof(bad_modifiers)-1]; // auto-init to zero
+
+ bool modifier_seen[sizeof(bad_modifiers)-1];
+#define modifier_index(c) (strchr(bad_modifiers, c) - bad_modifiers)
#define INITIAL_OUT_SIZE 64
emalloc(obuf, char *, INITIAL_OUT_SIZE, "format_tree");
@@ -830,7 +835,8 @@ format_tree(
#endif
fmt_type = MP_NONE;
- lj = alt = big_flag = bigbig_flag = small_flag = false;
+ lj = alt = false;
+ memset(modifier_seen, 0, sizeof(modifier_seen));
magic_posix_flag = false;
fill = sp;
cp = cend;
@@ -1014,57 +1020,29 @@ check_pos:
#else
goto retry;
#endif
+ case 'h':
+ case 'j':
case 'l':
- if (big_flag)
- break;
- else {
- static bool warned = false;
-
- if (do_lint && ! warned) {
- lintwarn(_("`l' is meaningless in awk formats; ignored"));
- warned = true;
- }
- if (do_posix) {
- msg(_("fatal: `l' is not permitted in POSIX awk formats"));
- goto out;
- }
- }
- big_flag = true;
- goto retry;
case 'L':
- if (bigbig_flag)
+ case 't':
+ case 'z':
+ if (modifier_seen[modifier_index(cs1)])
break;
else {
- static bool warned = false;
+ int ind = modifier_index(cs1);
- if (do_lint && ! warned) {
- lintwarn(_("`L' is meaningless in awk formats; ignored"));
- warned = true;
+ if (do_lint && ! warned[ind]) {
+ lintwarn(_("`%c' is meaningless in awk formats; ignored"), cs1);
+ warned[ind] = true;
}
if (do_posix) {
- msg(_("fatal: `L' is not permitted in POSIX awk formats"));
+ msg(_("fatal: `%c' is not permitted in POSIX awk formats"), cs1);
goto out;
}
}
- bigbig_flag = true;
+ modifier_seen[modifier_index(cs1)] = true;
goto retry;
- case 'h':
- if (small_flag)
- break;
- else {
- static bool warned = false;
- if (do_lint && ! warned) {
- lintwarn(_("`h' is meaningless in awk formats; ignored"));
- warned = true;
- }
- if (do_posix) {
- msg(_("fatal: `h' is not permitted in POSIX awk formats"));
- goto out;
- }
- }
- small_flag = true;
- goto retry;
case 'P':
if (magic_posix_flag)
break;
diff --git a/io.c b/io.c
index 2714398e..0af8ab1e 100644
--- a/io.c
+++ b/io.c
@@ -3702,7 +3702,7 @@ again:
* If still room in buffer, skip over null match
* and restart search. Otherwise, return.
*/
- if (bp + iop->scanoff < iop->dataend) {
+ if (bp + iop->scanoff <= iop->dataend) {
bp += iop->scanoff;
goto again;
}
diff --git a/pc/ChangeLog b/pc/ChangeLog
index c954002e..af2d2e66 100644
--- a/pc/ChangeLog
+++ b/pc/ChangeLog
@@ -1,3 +1,7 @@
+2021-01-07 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.tst: Rebuilt.
+
2020-12-26 Arnold D. Robbins <arnold@skeeve.com>
* Makefile.tst: Rebuilt.
diff --git a/pc/Makefile.tst b/pc/Makefile.tst
index 890c2ff0..5dbfb658 100644
--- a/pc/Makefile.tst
+++ b/pc/Makefile.tst
@@ -172,7 +172,7 @@ BASIC_TESTS = \
printf1 printfchar prmarscl prmreuse prt1eval prtoeval \
rand randtest range1 range2 readbuf rebrackloc rebt8b1 rebuild redfilnm regeq \
regexpbrack regexpbrack2 regexprange regrange reindops reparse resplit \
- rri1 rs rscompat rsnul1nl rsnulbig rsnulbig2 rsnulw \
+ rri1 rs rscompat rsnul1nl rsnulbig rsnulbig2 rsnullre rsnulw \
rstest1 rstest2 rstest3 rstest4 rstest5 rswhite \
scalar sclforin sclifin setrec0 setrec1 \
sigpipe1 sortempty sortglos spacere splitargv splitarr \
@@ -206,7 +206,8 @@ GAWK_EXT_TESTS = \
indirectbuiltin indirectcall indirectcall2 inf-nan-torture \
intarray iolint isarrayunset \
lint lintexp lintindex lintint lintlength lintplus lintold lintset lintwarn \
- manyfiles match1 match2 match3 mbstr1 mbstr2 mixed1 mktime muldimposix \
+ manyfiles match1 match2 match3 mbstr1 mbstr2 mixed1 mktime \
+ modifiers muldimposix \
nastyparm negtime next nondec nondec2 nonfatal1 nonfatal2 nonfatal3 \
nsawk1a nsawk1b nsawk1c nsawk2a nsawk2b \
nsbad nsbad_cmd nsforloop nsfuncrecurse nsindirect1 nsindirect2 nsprof1 nsprof2 \
@@ -288,7 +289,7 @@ NEED_SANDBOX = sandbox1
NEED_TRADITIONAL = litoct tradanch rscompat
# Lists of tests that run a shell script
-RUN_SHELL = exit fflush localenl next randtest rtlen rtlen01
+RUN_SHELL = exit fflush localenl modifiers next randtest rtlen rtlen01
# List of the tests which fail with EXIT CODE 1
FAIL_CODE1 = \
@@ -2208,6 +2209,11 @@ rsnul1nl:
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+rsnullre:
+ @echo $@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
rsnulw:
@echo $@
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -2981,6 +2987,11 @@ mktime:
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+modifiers:
+ @echo $@
+ @-$(LOCALES) AWK="$(AWKPROG)" "$(srcdir)"/$@.sh > _$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
muldimposix:
@echo $@
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk --posix >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
diff --git a/test/ChangeLog b/test/ChangeLog
index 7d373146..456af38a 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,13 @@
+2021-01-07 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (EXTRA_DIST): modifiers, new test.
+ * modifiers.sh, modifiers.ok: New files.
+
+ Unrelated:
+
+ * Makefile.am (EXTRA_DIST): rsnullre, new test.
+ * rsnullre.awk, rsnullre.in, rsnullre.ok: New files.
+
2020-12-26 Arnold D. Robbins <arnold@skeeve.com>
* Makefile.am (EXTRA_DIST): fpat9, new test.
diff --git a/test/Makefile.am b/test/Makefile.am
index 2b1f1416..09efe0eb 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -661,6 +661,8 @@ EXTRA_DIST = \
manglprm.ok \
manyfiles.awk \
manyfiles.ok \
+ modifiers.sh \
+ modifiers.ok \
muldimposix.awk \
muldimposix.ok \
match1.awk \
@@ -1098,6 +1100,9 @@ EXTRA_DIST = \
rsnul1nl.ok \
rsnulbig.ok \
rsnulbig2.ok \
+ rsnullre.awk \
+ rsnullre.in \
+ rsnullre.ok \
rsnulw.awk \
rsnulw.in \
rsnulw.ok \
@@ -1402,7 +1407,7 @@ BASIC_TESTS = \
printf1 printfchar prmarscl prmreuse prt1eval prtoeval \
rand randtest range1 range2 readbuf rebrackloc rebt8b1 rebuild redfilnm regeq \
regexpbrack regexpbrack2 regexprange regrange reindops reparse resplit \
- rri1 rs rscompat rsnul1nl rsnulbig rsnulbig2 rsnulw \
+ rri1 rs rscompat rsnul1nl rsnulbig rsnulbig2 rsnullre rsnulw \
rstest1 rstest2 rstest3 rstest4 rstest5 rswhite \
scalar sclforin sclifin setrec0 setrec1 \
sigpipe1 sortempty sortglos spacere splitargv splitarr \
@@ -1436,7 +1441,8 @@ GAWK_EXT_TESTS = \
indirectbuiltin indirectcall indirectcall2 inf-nan-torture \
intarray iolint isarrayunset \
lint lintexp lintindex lintint lintlength lintplus lintold lintset lintwarn \
- manyfiles match1 match2 match3 mbstr1 mbstr2 mixed1 mktime muldimposix \
+ manyfiles match1 match2 match3 mbstr1 mbstr2 mixed1 mktime \
+ modifiers muldimposix \
nastyparm negtime next nondec nondec2 nonfatal1 nonfatal2 nonfatal3 \
nsawk1a nsawk1b nsawk1c nsawk2a nsawk2b \
nsbad nsbad_cmd nsforloop nsfuncrecurse nsindirect1 nsindirect2 nsprof1 nsprof2 \
@@ -1518,7 +1524,7 @@ NEED_SANDBOX = sandbox1
NEED_TRADITIONAL = litoct tradanch rscompat
# Lists of tests that run a shell script
-RUN_SHELL = exit fflush localenl next randtest rtlen rtlen01
+RUN_SHELL = exit fflush localenl modifiers next randtest rtlen rtlen01
# List of the tests which fail with EXIT CODE 1
FAIL_CODE1 = \
diff --git a/test/Makefile.in b/test/Makefile.in
index b96b7d0d..54d4a114 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -924,6 +924,8 @@ EXTRA_DIST = \
manglprm.ok \
manyfiles.awk \
manyfiles.ok \
+ modifiers.sh \
+ modifiers.ok \
muldimposix.awk \
muldimposix.ok \
match1.awk \
@@ -1361,6 +1363,9 @@ EXTRA_DIST = \
rsnul1nl.ok \
rsnulbig.ok \
rsnulbig2.ok \
+ rsnullre.awk \
+ rsnullre.in \
+ rsnullre.ok \
rsnulw.awk \
rsnulw.in \
rsnulw.ok \
@@ -1665,7 +1670,7 @@ BASIC_TESTS = \
printf1 printfchar prmarscl prmreuse prt1eval prtoeval \
rand randtest range1 range2 readbuf rebrackloc rebt8b1 rebuild redfilnm regeq \
regexpbrack regexpbrack2 regexprange regrange reindops reparse resplit \
- rri1 rs rscompat rsnul1nl rsnulbig rsnulbig2 rsnulw \
+ rri1 rs rscompat rsnul1nl rsnulbig rsnulbig2 rsnullre rsnulw \
rstest1 rstest2 rstest3 rstest4 rstest5 rswhite \
scalar sclforin sclifin setrec0 setrec1 \
sigpipe1 sortempty sortglos spacere splitargv splitarr \
@@ -1699,7 +1704,8 @@ GAWK_EXT_TESTS = \
indirectbuiltin indirectcall indirectcall2 inf-nan-torture \
intarray iolint isarrayunset \
lint lintexp lintindex lintint lintlength lintplus lintold lintset lintwarn \
- manyfiles match1 match2 match3 mbstr1 mbstr2 mixed1 mktime muldimposix \
+ manyfiles match1 match2 match3 mbstr1 mbstr2 mixed1 mktime \
+ modifiers muldimposix \
nastyparm negtime next nondec nondec2 nonfatal1 nonfatal2 nonfatal3 \
nsawk1a nsawk1b nsawk1c nsawk2a nsawk2b \
nsbad nsbad_cmd nsforloop nsfuncrecurse nsindirect1 nsindirect2 nsprof1 nsprof2 \
@@ -1781,7 +1787,7 @@ NEED_SANDBOX = sandbox1
NEED_TRADITIONAL = litoct tradanch rscompat
# Lists of tests that run a shell script
-RUN_SHELL = exit fflush localenl next randtest rtlen rtlen01
+RUN_SHELL = exit fflush localenl modifiers next randtest rtlen rtlen01
# List of the tests which fail with EXIT CODE 1
FAIL_CODE1 = \
@@ -3883,6 +3889,11 @@ rsnul1nl:
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+rsnullre:
+ @echo $@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
rsnulw:
@echo $@
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -4637,6 +4648,11 @@ mktime:
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+modifiers:
+ @echo $@
+ @-$(LOCALES) AWK="$(AWKPROG)" "$(srcdir)"/$@.sh > _$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
muldimposix:
@echo $@
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk --posix >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
diff --git a/test/Maketests b/test/Maketests
index 363a2755..87b141b4 100644
--- a/test/Maketests
+++ b/test/Maketests
@@ -965,6 +965,11 @@ rsnul1nl:
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+rsnullre:
+ @echo $@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
rsnulw:
@echo $@
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -1719,6 +1724,11 @@ mktime:
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+modifiers:
+ @echo $@
+ @-$(LOCALES) AWK="$(AWKPROG)" "$(srcdir)"/$@.sh > _$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
muldimposix:
@echo $@
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk --posix >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
diff --git a/test/modifiers.ok b/test/modifiers.ok
new file mode 100644
index 00000000..77854331
--- /dev/null
+++ b/test/modifiers.ok
@@ -0,0 +1,12 @@
+gawk: cmd. line:1: warning: `h' is meaningless in awk formats; ignored
+gawk: cmd. line:1: fatal: `h' is not permitted in POSIX awk formats
+gawk: cmd. line:1: warning: `l' is meaningless in awk formats; ignored
+gawk: cmd. line:1: fatal: `l' is not permitted in POSIX awk formats
+gawk: cmd. line:1: warning: `L' is meaningless in awk formats; ignored
+gawk: cmd. line:1: fatal: `L' is not permitted in POSIX awk formats
+gawk: cmd. line:1: warning: `j' is meaningless in awk formats; ignored
+gawk: cmd. line:1: fatal: `j' is not permitted in POSIX awk formats
+gawk: cmd. line:1: warning: `t' is meaningless in awk formats; ignored
+gawk: cmd. line:1: fatal: `t' is not permitted in POSIX awk formats
+gawk: cmd. line:1: warning: `z' is meaningless in awk formats; ignored
+gawk: cmd. line:1: fatal: `z' is not permitted in POSIX awk formats
diff --git a/test/modifiers.sh b/test/modifiers.sh
new file mode 100755
index 00000000..07b95686
--- /dev/null
+++ b/test/modifiers.sh
@@ -0,0 +1,8 @@
+#! /bin/sh
+
+AWK=${AWK:-../gawk}
+for modifier in h l L j t z
+do
+ $AWK -v let=$modifier --posix --lint 'BEGIN { printf "%" let "u\n", 12 }'
+done
+exit 0
diff --git a/test/rsnullre.awk b/test/rsnullre.awk
new file mode 100644
index 00000000..72b156f2
--- /dev/null
+++ b/test/rsnullre.awk
@@ -0,0 +1,5 @@
+BEGIN {
+ RS = "()"
+}
+
+{ printf("<<%s>>\n", $0) ; printf("<%s>\n", RT) }
diff --git a/test/rsnullre.in b/test/rsnullre.in
new file mode 100644
index 00000000..257cc564
--- /dev/null
+++ b/test/rsnullre.in
@@ -0,0 +1 @@
+foo
diff --git a/test/rsnullre.ok b/test/rsnullre.ok
new file mode 100644
index 00000000..e8f34942
--- /dev/null
+++ b/test/rsnullre.ok
@@ -0,0 +1,3 @@
+<<foo
+>>
+<>