added depend label
[unix-history] / usr / src / usr.bin / systat / cmds.c
index 7ba41b1..f7e38ac 100644 (file)
@@ -5,7 +5,7 @@
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)cmds.c     5.2 (Berkeley) %G%";
+static char sccsid[] = "@(#)cmds.c     5.5 (Berkeley) %G%";
 #endif not lint
 
 /*
 #endif not lint
 
 /*
@@ -21,7 +21,6 @@ command(cmd)
         register char *cp;
         register struct cmdtab *p;
        int interval, omask;
         register char *cp;
         register struct cmdtab *p;
        int interval, omask;
-        char *arg;
        extern (*sigtstpdfl)();
 
        omask = sigblock(sigmask(SIGALRM));
        extern (*sigtstpdfl)();
 
        omask = sigblock(sigmask(SIGALRM));
@@ -96,11 +95,13 @@ command(cmd)
                        }
                        p = curcmd;
                }
                        }
                        p = curcmd;
                }
-                curcmd = p;
                if ((p->c_flags & CF_INIT) == 0) {
                if ((p->c_flags & CF_INIT) == 0) {
-                       (*p->c_init)();
-                       p->c_flags |= CF_INIT;
+                       if ((*p->c_init)())
+                               p->c_flags |= CF_INIT;
+                       else
+                               goto done;
                }
                }
+                curcmd = p;
                labels();
                 display();
                 status();
                labels();
                 display();
                 status();
@@ -122,7 +123,7 @@ lookup(name)
 
        longest = 0;
        nmatches = 0;
 
        longest = 0;
        nmatches = 0;
-       found = 0;
+       found = (struct cmdtab *) 0;
        for (c = cmdtab; p = c->c_name; c++) {
                for (q = name; *q == *p++; q++)
                        if (*q == 0)            /* exact match? */
        for (c = cmdtab; p = c->c_name; c++) {
                for (q = name; *q == *p++; q++)
                        if (*q == 0)            /* exact match? */