From 28dacbd66b5fb07add399e2ee9e46d85258e078d Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Tue, 4 Jun 2019 23:53:31 -0600 Subject: [PATCH] Allow unmatched right paren in regexes. Fixes Issue #40. --- ChangeLog | 7 +++++++ FIXES | 10 ++++++++-- awktest.tar | Bin 6850560 -> 6850560 bytes b.c | 14 ++++++++++++-- main.c | 2 +- 5 files changed, 28 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index fd03b2b..bb65336 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2019-06-05 Arnold D. Robbins + + * b.c (relex): Count parentheses and treat umatched right paren + as a literal character. + * awktest.tar (testdir/T.re): Added a test case. + * main.c (version): Upated. + 2019-05-29 Arnold D. Robbins * lib.c (isclvar): Remove check for additional '=' after diff --git a/FIXES b/FIXES index 183eaed..0665229 100644 --- a/FIXES +++ b/FIXES @@ -25,6 +25,12 @@ THIS SOFTWARE. This file lists all bug fixes, changes, etc., made since the AWK book was sent to the printers in August, 1987. +June 5, 2019: + Allow unmatched right parenthesis in a regular expression to + be treated literally. Fixes Issue #40. Thanks to GitHub user + Warner Losh (bsdimp) for the report. Thanks to Arnold Robbins + for the fix. + May 29,2019: Fix check for command line arguments to no longer require that first character after '=' not be another '='. Reverts change of @@ -34,7 +40,7 @@ May 29,2019: Apr 7, 2019: Update awktest.tar(p.50) to use modern options to sort. Needed for Android development. Thanks to GitHub user mohd-akram (Mohamed - Akram). From Comment #33. + Akram). From Issue #33. Mar 12, 2019: Added very simplistic support for cross-compiling in the @@ -54,7 +60,7 @@ Mar 3, 2019: #12: Avoid undefined behaviour when using ctype(3) functions in relex(). Thanks to GitHub user iamleot. #31: Make getline handle numeric strings, and update FIXES. Thanks - to GitHub user arnoldrobbins + to GitHub user arnoldrobbins. #32: maketab: support build systems with read-only source. Thanks to GitHub user enh. diff --git a/awktest.tar b/awktest.tar index 4ca482a621ca907068250fe4926234356dab926f..011c073de7bbbdd8c6b5fafd26546653d179ca6e 100644 GIT binary patch delta 16043 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 Bo^JpE delta 10255 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 wO^%*CDm(mSZ>U zBg?2FM?p8|CL`GQOWnYg6|2ZsLXVWB4I8P_2+l4>)Uy=va zEj067=3R2)6R);f`=hach(_?L360?E7&d|%*lRB%+J+6;q+T_z*v1v*e~VwGa#uxz zx+7R!qX1B9iILa+0UCFMjH5Z@W(=C(lBjE7zD252>fDCZNv6G7f5#!;1#()CII0KU zBjMt%84l*volZISzHlr??m?`1#JZ#V?{#~^L(-gv+g@z2I;Vke}Y0_Dd)GmZOkUz5HFl5!LqINxuKG80;nsD0e zf`aq)xOf*fF)I2wuoLrYHj^|X#b1GwQ+ZWxLh){ge5leI)H_?LcaLLsFK}n|OrUan{Az%bd;R>_?ov!r6~G>*nkyoXz6wRnB@i z`zdF=oV~_bg0m!NDbCWIWjM=nmg6kX8RP6{oXzI!=bX*q>=&HPoXzL# z*PQin_8ZO?aQ0iy7IOAG&K7a@I%kVHdxNtjoc*4&e$M{D*#Kv6a<-JSKXSH=v$r@~ z&e@+hTfy0%Ia|ruUpOmp_E*kU)mgFD?Xz)J(S#w~Tbrd~tx@8}P|>?|z&)Vdu)bLF z`)UKq@pYGt#adj>lBsIM+TUnMbb>`!eP0pNkbrx%i1_c-VLy=xyFMyHmJKOvc{6@x zpC~k3m32Z^2|h4;DokK)^r21AKk;Q#xP>C)GnlR{0>(<*=jPk)ms1 z{z3fTcHn3c=g@=5dyI~DkWtK9$LWKu*f&lT@&4;g^iw39+V0LuB&aJ;9Q_4R30Y2q z`!l{WI74Kr&$Gpr3E70Nr=26Z?n%kC_v{Nq7JCZxn!+1#_C=z0;9B4kD4x?Zpmge2 zA`UeElJbPe_kf<#1GFv2ow4Wh`hL-LUQ6hH|Dagzl~=z_G1!KA z-D{RGtqH>l(bk}E(bhp!XA;eL5pE`tK|%T4phQdkyGxkSG{Mg*A%v-t!Cl`(!=BVr z8iWt@h>p)@Y6mM?dZL8)k0AoV67;0UYPm~kohe~j!xk2HIw0TKYO4@2`oI}SRLLm+ z%_+&wVC~3NTb=uj)PEl7PrjL7f|jYP;xoLQ*+!pZAEk(ECcr(f-LR14Q)Mgy0dD*7 zk;@J)Eal~TtBG3RIqJw6D} zQod`;i9r!<%s9AfyZObnr9QaM*@Icu6SZfeMtypa;)#zy_%fwoK)LhmAi9$<@Z2Db zP`)MCc{tpM<`)KGgz(|TmxDE!V`v$1V-PCdH;CON6RveY#oq!8od+dyRsA-RDd+AC zLdIP8Sa6ptpgr3?(9nS@<-alVA0_;KknTME2)1o;t>X_$CC2)9CA zu!8(#5Qm8$5H9oWJJPPH1ETX3q&x3fg8dmuUpr&^hr?x1P2;4@#-SPCSN8TywkEGB zug0nX2d#nc+%vw2@!GO3o1rq!_^zdcNXzwQ%p&SFxV3VIJfXiw{QW1A?xEf!L<7PiSHX zJ|ZvobiiHnKp8g#s^6h(2E9JUcxt2us{h$HdgS()7dME3f@$~^mX-3 zC%;8@ZmD1aQ{&lM@kT{R*hWX_MS*@*3-M$KDV*&GF6qx-Rn*Gkv^cw}G7muIBvT1k6#}&XqvYYDV6L3sMk6bFBKPAu62Z!JTr-w=F4wH4%VvDM5qlHx-D$1!t&&+xWL+AXWT#sG@#pQw9B$TzDS0G|#}qw6}0hRdG8Q z#f`LR7gs1lUjN?Uvwf zBf7r9In$URn?$C_kK(dEso!b@y~AOL-wRm#pQzmx%|sE$Y z!%bD!W=@iOh)lN}`l*yEXmNCcj+PZi4_r#RZQzd;?1`DGPW-tgdZY77U?jn*E8ko= zhscCDbE~bcm9aQ~UKIzI`5h3{J_suQfXej?pZWqKYd~{A+?Ig0xQc-0tZ;Ob6XN^n zboe!mwPT=4ub