From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4984 invoked from network); 8 Jun 1999 12:35:39 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 8 Jun 1999 12:35:39 -0000 Received: (qmail 556 invoked by alias); 8 Jun 1999 12:35:21 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 6525 Received: (qmail 549 invoked from network); 8 Jun 1999 12:35:17 -0000 Message-Id: <9906081206.AA21204@ibmth.df.unipi.it> To: zsh-workers@sunsite.auc.dk (Zsh hackers list) Subject: PATCH: pws-21: parentheses in command word Date: Tue, 08 Jun 1999 14:06:39 +0200 From: Peter Stephenson I mentioned this a while ago, but can't find that in the archive, because I can never find things. For some reason, parentheses are treated specially in the command word in zsh, not just at the start (where, of course, they start a subshell). I just found a concrete example of where this causes problems: % ./*(/om[1]) should complete to the most recently modified directory. Instead, the command word is taken to be `./*' and the `(/om[1])' an argument. I thought maybe it was for compatility with other shells, but it seems to have the opposite effect. Here's a stupid (but perfectly valid) example: In ksh: $ touch print $ @(print|noprint) foo foo $ mv print noprint $ @(print|noprint) foo ksh: noprint: permission denied With zsh running as ksh, the @ is taken to be the command. This is bad. (Presumably this is another reason why ksh doesn't use naked parentheses for globbing.) I suggest trying with this `feature' disabled, unless someone can come up with a good reason for it. *** Src/lex.c.icp Mon Jan 25 14:59:49 1999 --- Src/lex.c.orig Tue Jun 8 12:28:02 1999 *************** *** 898,906 **** --- 898,917 ---- e = hgetc(); hungetc(e); lexstop = 0; + #if 1 + /* For command words, parentheses are only + * special at the start. But now we're tokenising + * the remaining string. So I don't see what + * the old incmdpos test here is for. + * pws 1999/6/8 + */ + if (e == ')') + goto brk; + #else if (e == ')' || (incmdpos && !brct && peek != ENVSTRING)) goto brk; + #endif } pct++; } -- Peter Stephenson Tel: +39 050 844536 WWW: http://www.ifh.de/~pws/ Dipartimento di Fisica, Via Buonarroti 2, 56127 Pisa, Italy