From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22107 invoked from network); 6 Jul 1999 13:22:37 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 6 Jul 1999 13:22:37 -0000 Received: (qmail 26084 invoked by alias); 6 Jul 1999 13:22:25 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 6987 Received: (qmail 26077 invoked from network); 6 Jul 1999 13:22:24 -0000 Message-Id: <9907061253.AA33621@ibmth.df.unipi.it> To: zsh-workers@sunsite.auc.dk (Zsh hackers list) Subject: PATCH: pws-25: typeset +f, functions + Date: Tue, 06 Jul 1999 14:53:43 +0200 From: Peter Stephenson If you do `typeset +x' or `typeset -x +' you get just the names of the exported parameters. Consequently, `typeset +f' and `functions +' (functions is claimed to be equivalent to `typeset -f') should just print the names of the functions. This is probably a candidate for 3.0.6 if Bart agrees it's a bug fix. --- Src/builtin.c.pf Tue Jul 6 14:29:18 1999 +++ Src/builtin.c Tue Jul 6 14:47:06 1999 @@ -1942,7 +1942,7 @@ Comp com; Shfunc shf; int i, returnval = 0; - int on = 0, off = 0; + int on = 0, off = 0, pflags = 0; /* Do we have any flags defined? */ if (ops['u'] == 1) @@ -1963,13 +1963,17 @@ return 1; } + if (ops['f'] == 2 || ops['+']) + pflags |= PRINT_NAMEONLY; + /* If no arguments given, we will print functions. If flags * * are given, we will print only functions containing these * * flags, else we'll print them all. */ if (!*argv) { if (ops['U'] && !ops['u']) on &= ~PM_UNDEFINED; - scanhashtable(shfunctab, 1, on|off, DISABLED, shfunctab->printnode, 0); + scanhashtable(shfunctab, 1, on|off, DISABLED, shfunctab->printnode, + pflags); return 0; } @@ -1982,7 +1986,8 @@ if ((com = parsereg(*argv))) { /* with no options, just print all functions matching the glob pattern */ if (!(on|off)) { - scanmatchtable(shfunctab, com, 0, DISABLED, shfunctab->printnode, 0); + scanmatchtable(shfunctab, com, 0, DISABLED, + shfunctab->printnode, pflags); } else { /* apply the options to all functions matching the glob pattern */ for (i = 0; i < shfunctab->hsize; i++) { @@ -2009,7 +2014,7 @@ shf->flags = (shf->flags | (on & ~PM_UNDEFINED)) & ~off; else /* no flags, so just print */ - shfunctab->printnode((HashNode) shf, 0); + shfunctab->printnode((HashNode) shf, pflags); } else if (on & PM_UNDEFINED) { /* Add a new undefined (autoloaded) function to the * * hash table with the corresponding flags set. */ -- Peter Stephenson Tel: +39 050 844536 WWW: http://www.ifh.de/~pws/ Dipartimento di Fisica, Via Buonarroti 2, 56127 Pisa, Italy