aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2015-05-05 12:32:15 +0300
committerArnold D. Robbins <arnold@skeeve.com>2015-05-05 12:32:15 +0300
commit8916089795a175cfd08541b67fdcf506d1ed5a1c (patch)
treeadcf0b970dc8e131c1a9ac89f2854c112311e79a
parentecf875a23050b7e3b64805674e9ce3cac4199cb8 (diff)
parent97b1c943a98196143414760f9e616f93fccce89d (diff)
downloadegawk-8916089795a175cfd08541b67fdcf506d1ed5a1c.tar.gz
egawk-8916089795a175cfd08541b67fdcf506d1ed5a1c.tar.bz2
egawk-8916089795a175cfd08541b67fdcf506d1ed5a1c.zip
Merge branch 'master' into feature/regex-type
-rw-r--r--ChangeLog8
-rw-r--r--awkgram.c7
-rw-r--r--awkgram.y7
-rwxr-xr-xconfig.guess27
-rwxr-xr-xconfig.sub13
-rw-r--r--pc/ChangeLog4
-rw-r--r--pc/Makefile.tst14
-rw-r--r--test/ChangeLog11
-rw-r--r--test/Makefile.am12
-rw-r--r--test/Makefile.in17
-rw-r--r--test/Maketests5
-rw-r--r--test/rebrackloc.awk31
-rw-r--r--test/rebrackloc.in3
-rw-r--r--test/rebrackloc.ok17
14 files changed, 152 insertions, 24 deletions
diff --git a/ChangeLog b/ChangeLog
index 3ea9c17d..024923f0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
2015-05-05 Arnold D. Robbins <arnold@skeeve.com>
+ * awkgram.y (yylex): Yet Another Fix for parsing bracket
+ expressions. Thanks yet again to Andrew Schorr. Maybe it's
+ even finally nailed down now.
+
+ Unrelated:
+
+ * config.guess, config.sub: Get latest versions.
+
Make profiling for hard regexes work.
* profile.c (pp_string_or_hard_regex): Renamed from pp_string.
diff --git a/awkgram.c b/awkgram.c
index 93ab99d9..5fcbdfcb 100644
--- a/awkgram.c
+++ b/awkgram.c
@@ -5761,11 +5761,12 @@ collect_regexp:
cur_index = tok - tokstart;
if (gawk_mb_cur_max == 1 || nextc_is_1stbyte) switch (c) {
case '[':
- if (nextc(false) == ':' || in_brack == 0)
+ if (nextc(false) == ':' || in_brack == 0) {
in_brack++;
+ if (in_brack == 1)
+ b_index = tok - tokstart;
+ }
pushback();
- if (in_brack == 1)
- b_index = tok - tokstart;
break;
case ']':
if (in_brack > 0
diff --git a/awkgram.y b/awkgram.y
index c10701f8..5abad880 100644
--- a/awkgram.y
+++ b/awkgram.y
@@ -3341,11 +3341,12 @@ collect_regexp:
cur_index = tok - tokstart;
if (gawk_mb_cur_max == 1 || nextc_is_1stbyte) switch (c) {
case '[':
- if (nextc(false) == ':' || in_brack == 0)
+ if (nextc(false) == ':' || in_brack == 0) {
in_brack++;
+ if (in_brack == 1)
+ b_index = tok - tokstart;
+ }
pushback();
- if (in_brack == 1)
- b_index = tok - tokstart;
break;
case ']':
if (in_brack > 0
diff --git a/config.guess b/config.guess
index dbfb9786..f7eb141e 100755
--- a/config.guess
+++ b/config.guess
@@ -2,7 +2,7 @@
# Attempt to guess a canonical system name.
# Copyright 1992-2015 Free Software Foundation, Inc.
-timestamp='2015-01-01'
+timestamp='2015-03-04'
# 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
@@ -168,20 +168,27 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# Note: NetBSD doesn't particularly care about the vendor
# portion of the name. We always set it to "unknown".
sysctl="sysctl -n hw.machine_arch"
- UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
- /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+ UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
+ /sbin/$sysctl 2>/dev/null || \
+ /usr/sbin/$sysctl 2>/dev/null || \
+ echo unknown)`
case "${UNAME_MACHINE_ARCH}" in
armeb) machine=armeb-unknown ;;
arm*) machine=arm-unknown ;;
sh3el) machine=shl-unknown ;;
sh3eb) machine=sh-unknown ;;
sh5el) machine=sh5le-unknown ;;
+ earmv*)
+ arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
+ endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'`
+ machine=${arch}${endian}-unknown
+ ;;
*) machine=${UNAME_MACHINE_ARCH}-unknown ;;
esac
# The Operating System including object format, if it has switched
# to ELF recently, or will in the future.
case "${UNAME_MACHINE_ARCH}" in
- arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+ arm*|earm*|i386|m68k|ns32k|sh3*|sparc|vax)
eval $set_cc_for_build
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ELF__
@@ -197,6 +204,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
os=netbsd
;;
esac
+ # Determine ABI tags.
+ case "${UNAME_MACHINE_ARCH}" in
+ earm*)
+ expr='s/^earmv[0-9]/-eabi/;s/eb$//'
+ abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"`
+ ;;
+ esac
# The OS release
# Debian GNU/NetBSD machines have a different userland, and
# thus, need a distinct triplet. However, they do not need
@@ -213,7 +227,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
# contains redundant information, the shorter form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
- echo "${machine}-${os}${release}"
+ echo "${machine}-${os}${release}${abi}"
exit ;;
*:Bitrig:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
@@ -933,6 +947,9 @@ EOF
crisv32:Linux:*:*)
echo ${UNAME_MACHINE}-axis-linux-${LIBC}
exit ;;
+ e2k:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
frv:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
diff --git a/config.sub b/config.sub
index 6d2e94c8..8f1229c6 100755
--- a/config.sub
+++ b/config.sub
@@ -2,7 +2,7 @@
# Configuration validation subroutine script.
# Copyright 1992-2015 Free Software Foundation, Inc.
-timestamp='2015-01-01'
+timestamp='2015-03-08'
# 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
@@ -117,7 +117,7 @@ maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
- knetbsd*-gnu* | netbsd*-gnu* | \
+ knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
kopensolaris*-gnu* | \
storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
@@ -259,7 +259,7 @@ case $basic_machine in
| bfin \
| c4x | c8051 | clipper \
| d10v | d30v | dlx | dsp16xx \
- | epiphany \
+ | e2k | epiphany \
| fido | fr30 | frv | ft32 \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| hexagon \
@@ -381,7 +381,7 @@ case $basic_machine in
| c[123]* | c30-* | [cjt]90-* | c4x-* \
| c8051-* | clipper-* | craynv-* | cydra-* \
| d10v-* | d30v-* | dlx-* \
- | elxsi-* \
+ | e2k-* | elxsi-* \
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
| h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
@@ -518,6 +518,9 @@ case $basic_machine in
basic_machine=i386-pc
os=-aros
;;
+ asmjs)
+ basic_machine=asmjs-unknown
+ ;;
aux)
basic_machine=m68k-apple
os=-aux
@@ -1373,7 +1376,7 @@ case $os in
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
| -sym* | -kopensolaris* | -plan9* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
- | -aos* | -aros* \
+ | -aos* | -aros* | -cloudabi* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
diff --git a/pc/ChangeLog b/pc/ChangeLog
index 3c1ca744..33c900a2 100644
--- a/pc/ChangeLog
+++ b/pc/ChangeLog
@@ -1,3 +1,7 @@
+2015-05-04 Scott Deifik <scottd.mail@sbcglobal.net>
+
+ * Makefile.tst: Sync with mainline.
+
2015-04-29 Arnold D. Robbins <arnold@skeeve.com>
* 4.1.2: Release tar ball made.
diff --git a/pc/Makefile.tst b/pc/Makefile.tst
index 7f579738..ac085467 100644
--- a/pc/Makefile.tst
+++ b/pc/Makefile.tst
@@ -154,7 +154,7 @@ BASIC_TESTS = \
gsubasgn gsubtest gsubtst2 gsubtst3 gsubtst4 gsubtst5 gsubtst6 \
gsubtst7 gsubtst8 \
hex hsprint \
- inputred intest intprec iobug1 \
+ inpref inputred intest intprec iobug1 \
leaddig leadnl litoct longsub longwrds \
manglprm math membug1 messages minusstr mmap8k mtchi18n \
nasty nasty2 negexp negrange nested nfldstr nfloop nfneg nfset nlfldsep \
@@ -165,7 +165,7 @@ BASIC_TESTS = \
paramdup paramres paramtyp paramuninitglobal parse1 parsefld parseme \
pcntplus posix2008sub prdupval prec printf0 printf1 prmarscl prmreuse \
prt1eval prtoeval \
- rand range1 rebt8b1 redfilnm regeq regexpbrack regexprange regrange reindops \
+ rand range1 rebt8b1 redfilnm regeq regexpbrack regexpbrack2 regexprange regrange reindops \
reparse resplit rri1 rs rsnul1nl rsnulbig rsnulbig2 rstest1 rstest2 \
rstest3 rstest4 rstest5 rswhite \
scalar sclforin sclifin sortempty sortglos splitargv splitarr splitdef \
@@ -1643,6 +1643,11 @@ hsprint:
# @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
@-$(TESTOUTCMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+inpref:
+ @echo $@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
inputred:
@echo $@
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -1951,6 +1956,11 @@ regexpbrack:
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+regexpbrack2:
+ @echo $@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
regexprange:
@echo $@
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
diff --git a/test/ChangeLog b/test/ChangeLog
index b4f7d014..e1430d70 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,14 @@
+2015-05-05 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (dbugeval): Wrap in test for interactive terminal
+ to avoid Mac OS X failure. Thanks to Nelson H.F. Beebe for
+ the report.
+
+2015-05-05 Andrew J. Schorr <aschorr@telemetry-investments.com>
+
+ * Makefile.am (rebrackloc): New test.
+ * rebrackloc.awk, rebrackloc.in, rebrackloc.ok: New files.
+
2015-04-29 Arnold D. Robbins <arnold@skeeve.com>
* 4.1.2: Release tar ball made.
diff --git a/test/Makefile.am b/test/Makefile.am
index c53e65c1..68ded6cd 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -770,6 +770,9 @@ EXTRA_DIST = \
readdir0.awk \
readfile2.awk \
readfile2.ok \
+ rebrackloc.awk \
+ rebrackloc.in \
+ rebrackloc.ok \
rebt8b1.awk \
rebt8b1.ok \
rebt8b2.awk \
@@ -1051,7 +1054,8 @@ BASIC_TESTS = \
paramdup paramres paramtyp paramuninitglobal parse1 parsefld parseme \
pcntplus posix2008sub prdupval prec printf0 printf1 prmarscl prmreuse \
prt1eval prtoeval \
- rand randtest range1 rebt8b1 redfilnm regeq regexpbrack regexpbrack2 regexprange regrange reindops \
+ rand randtest range1 rebrackloc rebt8b1 redfilnm regeq regexpbrack regexpbrack2 \
+ regexprange regrange reindops \
reparse resplit rri1 rs rsnul1nl rsnulbig rsnulbig2 rstest1 rstest2 \
rstest3 rstest4 rstest5 rswhite \
scalar sclforin sclifin sortempty sortglos splitargv splitarr splitdef \
@@ -2077,8 +2081,10 @@ backsmalls2:
dbugeval::
@echo $@
- @$(AWK) --debug -f /dev/null < "$(srcdir)"/$@.in > _$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+ @if [ -t 0 ]; then \
+ $(AWK) --debug -f /dev/null < "$(srcdir)"/$@.in > _$@ 2>&1 || echo EXIT CODE: $$? >>_$@ ; \
+ $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; \
+ fi
printhuge::
@echo $@
diff --git a/test/Makefile.in b/test/Makefile.in
index caae2ba5..139d1e09 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -1027,6 +1027,9 @@ EXTRA_DIST = \
readdir0.awk \
readfile2.awk \
readfile2.ok \
+ rebrackloc.awk \
+ rebrackloc.in \
+ rebrackloc.ok \
rebt8b1.awk \
rebt8b1.ok \
rebt8b2.awk \
@@ -1307,7 +1310,8 @@ BASIC_TESTS = \
paramdup paramres paramtyp paramuninitglobal parse1 parsefld parseme \
pcntplus posix2008sub prdupval prec printf0 printf1 prmarscl prmreuse \
prt1eval prtoeval \
- rand randtest range1 rebt8b1 redfilnm regeq regexpbrack regexpbrack2 regexprange regrange reindops \
+ rand randtest range1 rebrackloc rebt8b1 redfilnm regeq regexpbrack regexpbrack2 \
+ regexprange regrange reindops \
reparse resplit rri1 rs rsnul1nl rsnulbig rsnulbig2 rstest1 rstest2 \
rstest3 rstest4 rstest5 rswhite \
scalar sclforin sclifin sortempty sortglos splitargv splitarr splitdef \
@@ -2513,8 +2517,10 @@ backsmalls2:
dbugeval::
@echo $@
- @$(AWK) --debug -f /dev/null < "$(srcdir)"/$@.in > _$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+ @if [ -t 0 ]; then \
+ $(AWK) --debug -f /dev/null < "$(srcdir)"/$@.in > _$@ 2>&1 || echo EXIT CODE: $$? >>_$@ ; \
+ $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; \
+ fi
printhuge::
@echo $@
@@ -3250,6 +3256,11 @@ range1:
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+rebrackloc:
+ @echo $@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
rebt8b1:
@echo $@
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
diff --git a/test/Maketests b/test/Maketests
index 61b0ec8e..017caa76 100644
--- a/test/Maketests
+++ b/test/Maketests
@@ -702,6 +702,11 @@ range1:
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+rebrackloc:
+ @echo $@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
rebt8b1:
@echo $@
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
diff --git a/test/rebrackloc.awk b/test/rebrackloc.awk
new file mode 100644
index 00000000..c5987fcb
--- /dev/null
+++ b/test/rebrackloc.awk
@@ -0,0 +1,31 @@
+match($0, /([Nn]ew) Value +[\([]? *([[:upper:]]+)/, f) {
+ print "re1", NR, f[1], f[2]
+}
+
+match($0, /([][])/, f) {
+ print "re2", NR, f[1]
+}
+
+/[]]/ {
+ print "re3", NR, $0
+}
+
+/[\[]/ {
+ print "re4", NR, $0
+}
+
+/[[]/ {
+ print "re5", NR, $0
+}
+
+/[][]/ {
+ print "re6", NR, $0
+}
+
+/[\([][[:upper:]]*/ {
+ print "re7", NR, $0
+}
+
+/[\([]/ {
+ print "re8", NR, $0
+}
diff --git a/test/rebrackloc.in b/test/rebrackloc.in
new file mode 100644
index 00000000..d82369b6
--- /dev/null
+++ b/test/rebrackloc.in
@@ -0,0 +1,3 @@
+New Value [XYZ]
+[
+]
diff --git a/test/rebrackloc.ok b/test/rebrackloc.ok
new file mode 100644
index 00000000..ec98bf58
--- /dev/null
+++ b/test/rebrackloc.ok
@@ -0,0 +1,17 @@
+re1 1 New XYZ
+re2 1 [
+re3 1 New Value [XYZ]
+re4 1 New Value [XYZ]
+re5 1 New Value [XYZ]
+re6 1 New Value [XYZ]
+re7 1 New Value [XYZ]
+re8 1 New Value [XYZ]
+re2 2 [
+re4 2 [
+re5 2 [
+re6 2 [
+re7 2 [
+re8 2 [
+re2 3 ]
+re3 3 ]
+re6 3 ]