the format string gets modified by parsefmt -- don't use it twice
authorKeith Bostic <bostic@ucbvax.Berkeley.EDU>
Tue, 4 Jun 1991 08:26:28 +0000 (00:26 -0800)
committerKeith Bostic <bostic@ucbvax.Berkeley.EDU>
Tue, 4 Jun 1991 08:26:28 +0000 (00:26 -0800)
SCCS-vsn: bin/ps/ps.c 5.42
SCCS-vsn: bin/ps/keyword.c 5.9

usr/src/bin/ps/keyword.c
usr/src/bin/ps/ps.c

index 5ec22db..94f2b94 100644 (file)
@@ -260,13 +260,14 @@ showkey()
 parsefmt(p)
        char *p;
 {
 parsefmt(p)
        char *p;
 {
+       static struct varent *vtail;
        register VAR *v;
        register char *cp;
        register struct varent *vent;
        static VAR *findvar();
 
 #define        FMTSEP  " \t,\n"
        register VAR *v;
        register char *cp;
        register struct varent *vent;
        static VAR *findvar();
 
 #define        FMTSEP  " \t,\n"
-       while (p) {
+       while (p && *p) {
                while ((cp = strsep(&p, FMTSEP)) != NULL && *cp == '\0')
                        /* void */;
                if (!(v = findvar(cp)))
                while ((cp = strsep(&p, FMTSEP)) != NULL && *cp == '\0')
                        /* void */;
                if (!(v = findvar(cp)))
index be2aee4..79fe0e1 100644 (file)
@@ -112,6 +112,7 @@ main(argc, argv)
                case 'j':
                        parsefmt(jfmt);
                        fmt = 1;
                case 'j':
                        parsefmt(jfmt);
                        fmt = 1;
+                       jfmt[0] = '\0';
                        break;
                case 'L': 
                        showkey();
                        break;
                case 'L': 
                        showkey();
@@ -119,6 +120,7 @@ main(argc, argv)
                case 'l':
                        parsefmt(lfmt);
                        fmt = 1;
                case 'l':
                        parsefmt(lfmt);
                        fmt = 1;
+                       lfmt[0] = '\0';
                        break;
                case 'M':
                        memf = optarg;
                        break;
                case 'M':
                        memf = optarg;
@@ -133,6 +135,7 @@ main(argc, argv)
                        parsefmt(o1);
                        parsefmt(optarg);
                        parsefmt(o2);
                        parsefmt(o1);
                        parsefmt(optarg);
                        parsefmt(o2);
+                       o1[0] = o2[0] = '\0';
                        fmt = 1;
                        break;
                case 'o':
                        fmt = 1;
                        break;
                case 'o':
@@ -176,11 +179,13 @@ main(argc, argv)
                        parsefmt(ufmt);
                        sortby = SORTCPU;
                        fmt = 1;
                        parsefmt(ufmt);
                        sortby = SORTCPU;
                        fmt = 1;
+                       ufmt[0] = '\0';
                        break;
                case 'v':
                        parsefmt(vfmt);
                        sortby = SORTMEM;
                        fmt = 1;
                        break;
                case 'v':
                        parsefmt(vfmt);
                        sortby = SORTMEM;
                        fmt = 1;
+                       vfmt[0] = '\0';
                        break;
                case 'W':
                        swapf = optarg;
                        break;
                case 'W':
                        swapf = optarg;