zsh-workers
 help / color / mirror / code / Atom feed
* PATCH: pws-25: typeset +f, functions +
@ 1999-07-06 12:53 Peter Stephenson
  1999-07-06 13:50 ` Andrej Borsenkow
  1999-07-06 14:50 ` Oliver Kiddle
  0 siblings, 2 replies; 5+ messages in thread
From: Peter Stephenson @ 1999-07-06 12:53 UTC (permalink / raw)
  To: Zsh hackers list

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 <pws@ibmth.df.unipi.it>       Tel: +39 050 844536
WWW:  http://www.ifh.de/~pws/
Dipartimento di Fisica, Via Buonarroti 2, 56127 Pisa, Italy


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~1999-07-07 12:12 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1999-07-06 12:53 PATCH: pws-25: typeset +f, functions + Peter Stephenson
1999-07-06 13:50 ` Andrej Borsenkow
1999-07-06 14:50 ` Oliver Kiddle
1999-07-07 11:21   ` PATCH: pws-25: alias +, alias +[grm] Oliver Kiddle
1999-07-07 11:43     ` Peter Stephenson

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).