From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.1 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from primenet.com.au (ns1.primenet.com.au [203.24.36.2]) by inbox.vuxu.org (OpenSMTPD) with ESMTP id 8d263758 for ; Tue, 19 Nov 2019 18:01:26 +0000 (UTC) Received: (qmail 29243 invoked by alias); 19 Nov 2019 18:01:13 -0000 Mailing-List: contact zsh-users-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Users List List-Post: List-Help: List-Unsubscribe: X-Seq: 24449 Received: (qmail 326 invoked by uid 1010); 19 Nov 2019 18:01:13 -0000 X-Qmail-Scanner-Diagnostics: from out1-smtp.messagingengine.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.102.0/25635. spamassassin: 3.4.2. Clear:RC:0(66.111.4.25):SA:0(-2.6/5.0):. Processed in 5.203425 secs); 19 Nov 2019 18:01:13 -0000 X-Envelope-From: d.s@daniel.shahaf.name X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | Received-SPF: none (ns1.primenet.com.au: domain at daniel.shahaf.name does not designate permitted sender hosts) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= daniel.shahaf.name; h=mime-version:message-id:in-reply-to :references:date:from:to:subject:content-type :content-transfer-encoding; s=fm1; bh=HYVex4WXiMD538x4Mug3sZUxfx C/LAFXufyE/avAYM4=; b=D5GVak7l29VWTuuJKCMZt/m1+83YMvRZVqexTRrrfI 7eKQVt+VGfYsjDSIXLiR+I4IUS5hZT0kY6XEL19j7/dF3hexR0Ue0efQtyKrhkv+ m/AhcduyGeFGkn6wGVAM3NrqVS4BKnvE0O9YFyVAFJGoNNrJDzPj508aB1XlJ0n3 Hus5i8wtzQ5UVr5BZpG6AHpotQy7vpN1SdARLuvK291gbd1JbhNchTb6Ktdku7aJ 00JLWKlNffaQJ82aAmVWsX2E2S2zI0ULxa8XMKcfihOid8ZzKenogKei6+H4avm/ aM4qCHz4pG/fmHgRwz8CkipPwnmYKn7AAIWcyKJ26ySA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm1; bh=HYVex4WXiMD538x4Mug3sZUxfxC/LAFXufyE/avAY M4=; b=PWZiNJ0BEW/ORw8pCa/5wi+r58NB3fK9dhwllfRlqsB7FqeM5OTJl+UrI WhmwEXAspwNSaoX7IpF7xuzWeG+bamAM8QjHF6ouVpZpfc1IVoDT0tgs4K9yIeCY KHcfVvi3NVfiMydaOvWAU5w+Ovx9PuEMpxz3Xa7EMJuWAtXze7hmLbwaAWa61OD6 NBhiXVAfzSPLSLkWCp94aE9Z6gIY2L2uDw/f6DXHYLL/kaEak4sI41F435w1qMfU VT0AX4rQFGa/v4CpUwDu+l2FWD/1Ssy1lQ/lIdgCEdMFaAkHbsuNygDFhC4DueWQ 6i4QzwIdAUAIG/2bd++TmZurkS89Q== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedufedrudegkedguddtlecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecunecujfgurhepofgfggfkjghffffhvffutgfgse htqhertderreejnecuhfhrohhmpedfffgrnhhivghlucfuhhgrhhgrfhdfuceougdrshes uggrnhhivghlrdhshhgrhhgrfhdrnhgrmhgvqeenucfrrghrrghmpehmrghilhhfrhhomh epugdrshesuggrnhhivghlrdhshhgrhhgrfhdrnhgrmhgvnecuvehluhhsthgvrhfuihii vgeptd X-ME-Proxy: X-Mailer: MessagingEngine.com Webmail Interface User-Agent: Cyrus-JMAP/3.1.7-578-g826f590-fmstable-20191119v1 Mime-Version: 1.0 Message-Id: In-Reply-To: <1574070429.4551.2.camel@samsung.com> References: <1574070429.4551.2.camel@samsung.com> Date: Tue, 19 Nov 2019 18:00:08 +0000 From: "Daniel Shahaf" To: zsh-users@zsh.org Subject: Re: P modify in history event Content-Type: text/plain;charset=utf-8 Content-Transfer-Encoding: quoted-printable Peter Stephenson wrote on Mon, 18 Nov 2019 09:47 +00:00: > On Sun, 2019-11-17 at 12:42 -0600, Perry Smith wrote: > > I=E2=80=99m (slowly) reading through zshexpn and playing with things= to > > learn.=C2=A0=C2=A0This does not work: > >=C2=A0 > > >=C2=A0 > > > pedz@MysticSlate my-play-dir % echo /this/is/a/../../path > > > /this/is/a/../../path > > > pedz@MysticSlate my-play-dir % echo !$:P > > > zsh: illegal modifier: P > > even if the file specified exists >=20 > I think it just got missed out of the history modifiers, which are > handled in a different place from the modifiers in the case of glob > qualifiers and vaariables. Thanks for fixing this. Test added in 030440d5b7bfd2968138836e962f1ef61= ea0bae8. > +++ b/Src/hist.c > @@ -920,6 +920,16 @@ histsubchar(int c) > + =C2=A0=C2=A0=C2=A0=C2=A0case 'P': > + if (*sline !=3D '/') { > + =C2=A0=C2=A0=C2=A0=C2=A0char *here =3D zgetcwd(); > + =C2=A0=C2=A0=C2=A0=C2=A0if (here[strlen(here)-1] !=3D '/') Can =C2=ABzgetcwd()=C2=BB return an empty string? If that's possible, t= he condition will be undefined behaviour (=C2=AB""[-1]=C2=BB). > + sline =3D zhtricat(metafy(here, -1, META_HEAPDUP), "/", sline); > + =C2=A0=C2=A0=C2=A0=C2=A0else > + sline =3D dyncat(here, sline); > + } > + sline =3D xsymlink(sline, 1); > + break; Cheers, Daniel