svn commit: trunk/busybox/shell

vda at busybox.net vda at busybox.net
Sun May 20 13:08:32 UTC 2007


Author: vda
Date: 2007-05-20 06:08:31 -0700 (Sun, 20 May 2007)
New Revision: 18654

Log:
ash: implement type -p, costs less than 10 bytes
(patch by Mats Erik Andersson <mats.andersson64 at comhem.se>)


Modified:
   trunk/busybox/shell/ash.c


Changeset:
Modified: trunk/busybox/shell/ash.c
===================================================================
--- trunk/busybox/shell/ash.c	2007-05-20 12:32:41 UTC (rev 18653)
+++ trunk/busybox/shell/ash.c	2007-05-20 13:08:31 UTC (rev 18654)
@@ -6892,14 +6892,8 @@
 /*
  * Locate and print what a word is...
  */
-#if ENABLE_ASH_CMDCMD
 static int
 describe_command(char *command, int describe_command_verbose)
-#else
-#define describe_command_verbose 1
-static int
-describe_command(char *command)
-#endif
 {
 	struct cmdentry entry;
 	struct tblentry *cmdp;
@@ -6922,13 +6916,12 @@
 	/* Then look at the aliases */
 	ap = lookupalias(command, 0);
 	if (ap != NULL) {
-		if (describe_command_verbose) {
-			out1fmt(" is an alias for %s", ap->val);
-		} else {
+		if (!describe_command_verbose) {
 			out1str("alias ");
 			printalias(ap);
 			return 0;
 		}
+		out1fmt(" is an alias for %s", ap->val);
 		goto out;
 	}
 #endif
@@ -6997,16 +6990,18 @@
 static int
 typecmd(int argc, char **argv)
 {
-	int i;
+	int i = 1;
 	int err = 0;
+	int verbose = 1;
 
-	for (i = 1; i < argc; i++) {
-#if ENABLE_ASH_CMDCMD
-		err |= describe_command(argv[i], 1);
-#else
-		err |= describe_command(argv[i]);
-#endif
+	/* type -p ... ? (we don't bother checking for 'p') */
+	if (argv[1][0] == '-') {
+		i++;
+		verbose = 0;
 	}
+	while (i < argc) {
+		err |= describe_command(argv[i++], verbose);
+	}
 	return err;
 }
 




More information about the busybox-cvs mailing list