diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2015-05-05 12:32:15 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2015-05-05 12:32:15 +0300 |
commit | 8916089795a175cfd08541b67fdcf506d1ed5a1c (patch) | |
tree | adcf0b970dc8e131c1a9ac89f2854c112311e79a | |
parent | ecf875a23050b7e3b64805674e9ce3cac4199cb8 (diff) | |
parent | 97b1c943a98196143414760f9e616f93fccce89d (diff) | |
download | egawk-8916089795a175cfd08541b67fdcf506d1ed5a1c.tar.gz egawk-8916089795a175cfd08541b67fdcf506d1ed5a1c.tar.bz2 egawk-8916089795a175cfd08541b67fdcf506d1ed5a1c.zip |
Merge branch 'master' into feature/regex-type
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | awkgram.c | 7 | ||||
-rw-r--r-- | awkgram.y | 7 | ||||
-rwxr-xr-x | config.guess | 27 | ||||
-rwxr-xr-x | config.sub | 13 | ||||
-rw-r--r-- | pc/ChangeLog | 4 | ||||
-rw-r--r-- | pc/Makefile.tst | 14 | ||||
-rw-r--r-- | test/ChangeLog | 11 | ||||
-rw-r--r-- | test/Makefile.am | 12 | ||||
-rw-r--r-- | test/Makefile.in | 17 | ||||
-rw-r--r-- | test/Maketests | 5 | ||||
-rw-r--r-- | test/rebrackloc.awk | 31 | ||||
-rw-r--r-- | test/rebrackloc.in | 3 | ||||
-rw-r--r-- | test/rebrackloc.ok | 17 |
14 files changed, 152 insertions, 24 deletions
@@ -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. @@ -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 @@ -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 ;; @@ -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 ] |