From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14574 invoked by alias); 11 Aug 2017 02:02:57 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 41527 Received: (qmail 13183 invoked by uid 1010); 11 Aug 2017 02:02:57 -0000 X-Qmail-Scanner-Diagnostics: from mx.spodhuis.org by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.99.2/21882. spamassassin: 3.4.1. Clear:RC:0(94.142.241.89):SA:0(-2.3/5.0):. Processed in 1.743917 secs); 11 Aug 2017 02:02:57 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=RCVD_IN_DNSWL_MED, RP_MATCHES_RCVD,SPF_HELO_PASS,SPF_PASS,T_DKIM_INVALID,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.1 X-Envelope-From: zsh-workers+phil.pennock@spodhuis.org X-Qmail-Scanner-Mime-Attachments: |signature.asc| X-Qmail-Scanner-Zip-Files: | DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=spodhuis.org; s=d201708; h=In-Reply-To:Content-Type:MIME-Version:References :Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To:Content-Transfer-Encoding :Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=SVrNCebNThHJxP5vezl7Y1r5JZUqS5jg/ke9LzFUl+o=; b=Y0cInx/qSPNCaZvOdt3ffiaXOG iM5KJPrg4qBjt5oVmAFBrynLPePEMP1x6peAjqfCQRBPlFTO9gu0kESh4Q6dPrSrSwU33asPfQRyn GhbBtqLC0xrrjyLELYDh1bUqxu7+2Xd4elvyejXfCd2DMWYl0gPz2oUPs0G8EZrZ3BWNdC4cErPTF E/Mtku8lMqHsqEV3wdCs8KJkY1w+; Date: Thu, 10 Aug 2017 22:02:46 -0400 From: Phil Pennock To: Bart Schaefer Cc: Zsh hackers list Subject: [PATCH] repair conds where - within cond name Message-ID: <20170811020246.GA718@breadbox.private.spodhuis.org> References: <86221c7e-aa71-28a7-21c2-8ed800090edd@bureaucracy.de> <20170811010701.GA94571@tower.spodhuis.org> <20170811013649.GA95238@tower.spodhuis.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="IJpNTDwzlM2Ie8A6" Content-Disposition: inline In-Reply-To: OpenPGP: url=https://www.security.spodhuis.org/PGP/keys/0x4D1E900E14C1CC04.asc --IJpNTDwzlM2Ie8A6 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On 2017-08-10 at 18:49 -0700, Bart Schaefer wrote: > On Aug 10, 2017 6:37 PM, "Phil Pennock" < > zsh-workers+phil.pennock@spodhuis.org> wrote: >=20 > 40760: Always tokenize unquoted - to Dash. >=20 > I remember this, and thought there was a subsequent patch that fixed it > again. Not in master. Fix below; adds a test too. Did I really not provide tests for the zsh/regex module? :( -Phil =46rom 6f0dcb270ff13327fef341974a1dde4e9a7a4f86 Mon Sep 17 00:00:00 2001 =46rom: Phil Pennock Subject: [PATCH] repair conds where - within cond name Date: Thu, 10 Aug 2017 21:58:11 -0400 In 40760 we switched to tokenizing `-` to `Dash` broadly; the condtab lookup is a simple strcmp but some of the loadable conditionals have a `-` within their name (-regex-match and -pcre-match). That failed. De-tokenize this one character before lookup. Add a test-case. --- Src/module.c | 17 +++++++++++++++-- Test/V07pcre.ztst | 9 +++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/Src/module.c b/Src/module.c index 21d68b1ac..b5f522bf0 100644 --- a/Src/module.c +++ b/Src/module.c @@ -649,11 +649,21 @@ getconddef(int inf, const char *name, int autol) { Conddef p; int f =3D 1; + char *lookup, *s; + + /* detokenize the Dash to the form encoded in lookup tables */ + lookup =3D ztrdup(name); + if (!lookup) + return NULL; + for (s =3D lookup; *s !=3D '\0'; s++) { + if (*s =3D=3D Dash) + *s =3D '-'; + } =20 do { for (p =3D condtab; p; p =3D p->next) { if ((!!inf =3D=3D !!(p->flags & CONDF_INFIX)) && - !strcmp(name, p->name)) + !strcmp(lookup, p->name)) break; } if (autol && p && p->module) { @@ -664,16 +674,19 @@ getconddef(int inf, const char *name, int autol) if (f) { (void)ensurefeature(p->module, (p->flags & CONDF_INFIX) ? "C:" : "c:", - (p->flags & CONDF_AUTOALL) ? NULL : name); + (p->flags & CONDF_AUTOALL) ? NULL : lookup); f =3D 0; p =3D NULL; } else { deleteconddef(p); + free(lookup); return NULL; } } else break; } while (!p); + + free(lookup); return p; } =20 diff --git a/Test/V07pcre.ztst b/Test/V07pcre.ztst index 7426e7bf8..ab41d33dc 100644 --- a/Test/V07pcre.ztst +++ b/Test/V07pcre.ztst @@ -137,6 +137,15 @@ 0:ensure ASCII NUL passes in and out of matched plaintext >6; 3; 3 =20 +# Ensure the long-form infix operator works + [[ foo -pcre-match ^f..$ ]] + print $? + [[ foo -pcre-match ^g..$ ]] + print $? +0:infix -pcre-match works +>0 +>1 + # Subshell because crash on failure ( setopt re_match_pcre [[ test.txt =3D~ '^(.*_)?(test)' ]] --=20 2.14.1 --IJpNTDwzlM2Ie8A6 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: Digital signature -----BEGIN PGP SIGNATURE----- iHUEARYIAB0WIQROXBeef/xNv45sEy9REE5mjdBEgQUCWY0QOwAKCRBREE5mjdBE gbf9AQDVvome7MzWDd5jSXfrHrUGkkcNI9TJthlfx226oXh9QwEAgqmT89wz+/cP BuRU/u1eQkK8lUdROxlbRZ1hzAWcjwuJAjMEAQEIAB0WIQTGk6A04e1u6VTK4toT 2tmcfkFRnAUCWY0QRQAKCRAT2tmcfkFRnF00D/4kiPP12uhMWVdM1M20h/2UNsLq XJpQp9pMxgynr8/bXifF6wly8noT2e5y89Wh5c7LXt9Q/Q9QHhE8Q77gdXiyolDh jvDfqfGfSemAY09HFT1yhpg/TI3rXxWp3ZUpXoSjj/a44exNx413iDT9sVQyM3Dp lXjy54+uK3SEGl7bUWM4rHh4MD+eWLr+00PFF/LFrdho8ZFkZ3la+MiYASnA1YoI Y1zV7xBx+Jz35K14ARCjZwNFfRFeLes568dwiPIYVaLOvxsYnRdo4Tryz5eWIajn UJyI+HycHUwYXwJ7xkQTeE0fTPpmQfVjPFouiHzSOmTJnwDeeH6fHpMikoqornxJ 9CcXTCEmC31zgqJ1W2/4OBQo60j36ZV0RD15CiC4RFdjHpHFXXlEZZ57NeWszm5U gMVQ8jFv+8kyKkn/aPhUf8v/tuV4y2kmSbesWWo+LVP9drcmdrbPqHvhnR9Z6UXn Lk3NuOynB+lje96SaeoVOkZHGAonuwKqT9ci6IHMfn1PvHqMFYu2APeK14JN0PJB Y2ss7KsPIUf9FnecqnySqObb3YnU512S6+FSj2/eeYhXN/8re3bfOYQ4d3nph0eJ lFA2hywzZ/XsEqULhR5OgnYtDbRu9+7mlSnrOOt9STL/Ko5SjqokS/pVsNdbdV4r vDuw1KTxhuZHfB1z0A== =HWNs -----END PGP SIGNATURE----- --IJpNTDwzlM2Ie8A6--