diff options
author | jmallett <jmallett@FreeBSD.org> | 2003-01-19 00:22:34 +0000 |
---|---|---|
committer | jmallett <jmallett@FreeBSD.org> | 2003-01-19 00:22:34 +0000 |
commit | 0c8d64a2c4ed9577970bc064bd9354ec7fa78297 (patch) | |
tree | 2986fc8ec7518040f3f7cba46759c64c32ef7920 /bin/ps/ps.c | |
parent | 6f344674a0af04f9a80844d7e0495643cfd96161 (diff) | |
download | FreeBSD-src-0c8d64a2c4ed9577970bc064bd9354ec7fa78297.zip FreeBSD-src-0c8d64a2c4ed9577970bc064bd9354ec7fa78297.tar.gz |
When inserting a non-user-specified (e.g. not via -o or -O) format, don't dupe
one that is already there. This is consistent with GNU ps(1)'s BSD mode, and
POLA.
Reported by: Andy Farkas <andyf@speednet.com.au>
Tested by: Andy Farkas <andyf@speednet.com.au>
Diffstat (limited to 'bin/ps/ps.c')
-rw-r--r-- | bin/ps/ps.c | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/bin/ps/ps.c b/bin/ps/ps.c index acdade0..24e47eb 100644 --- a/bin/ps/ps.c +++ b/bin/ps/ps.c @@ -193,7 +193,7 @@ main(int argc, char *argv[]) prtheader = ws.ws_row > 5 ? ws.ws_row : 22; break; case 'j': - parsefmt(jfmt); + parsefmt(jfmt, 0); _fmt = 1; jfmt[0] = '\0'; break; @@ -201,7 +201,7 @@ main(int argc, char *argv[]) showkey(); exit(0); case 'l': - parsefmt(lfmt); + parsefmt(lfmt, 0); _fmt = 1; lfmt[0] = '\0'; break; @@ -217,14 +217,14 @@ main(int argc, char *argv[]) dropgid = 1; break; case 'O': - parsefmt(o1); - parsefmt(optarg); - parsefmt(o2); + parsefmt(o1, 1); + parsefmt(optarg, 1); + parsefmt(o2, 1); o1[0] = o2[0] = '\0'; _fmt = 1; break; case 'o': - parsefmt(optarg); + parsefmt(optarg, 1); _fmt = 1; break; #if defined(LAZY_PS) @@ -270,13 +270,13 @@ main(int argc, char *argv[]) xflg++; /* XXX: intuitive? */ break; case 'u': - parsefmt(ufmt); + parsefmt(ufmt, 0); sortby = SORTCPU; _fmt = 1; ufmt[0] = '\0'; break; case 'v': - parsefmt(vfmt); + parsefmt(vfmt, 0); sortby = SORTMEM; _fmt = 1; vfmt[0] = '\0'; @@ -292,7 +292,7 @@ main(int argc, char *argv[]) xflg = 1; break; case 'Z': - parsefmt(Zfmt); + parsefmt(Zfmt, 0); Zfmt[0] = '\0'; break; case '?': @@ -325,7 +325,7 @@ main(int argc, char *argv[]) errx(1, "%s", errbuf); if (!_fmt) - parsefmt(dfmt); + parsefmt(dfmt, 0); /* XXX - should be cleaner */ if (!all && ttydev == NODEV && pid == -1 && !nuids) { @@ -456,6 +456,18 @@ getuids(const char *arg, int *nuids) return uids; } +VARENT * +find_varentry(VAR *v) +{ + struct varent *vent; + + for (vent = vhead; vent; vent = vent->next) { + if (strcmp(vent->var->name, v->name) == 0) + return vent; + } + return NULL; +} + static void scanvars(void) { |