summaryrefslogtreecommitdiff
path: root/bin/ps/keyword.c
diff options
context:
space:
mode:
authorTodd C. Miller <millert@cvs.openbsd.org>1997-08-08 19:30:11 +0000
committerTodd C. Miller <millert@cvs.openbsd.org>1997-08-08 19:30:11 +0000
commit7897cd60201df45bca224c49b20122264c73b21d (patch)
tree0a63697b76b4b0dff5537fe8c04935e9d1388dfe /bin/ps/keyword.c
parent0a65b9999cff497e709bece02528471757af1a45 (diff)
Add a "parsed" flag for ps fields so we don't print the same field
multiple times. Fixes PR #298 from Carsten Hammer <chammer@vogon.party.de>
Diffstat (limited to 'bin/ps/keyword.c')
-rw-r--r--bin/ps/keyword.c75
1 files changed, 38 insertions, 37 deletions
diff --git a/bin/ps/keyword.c b/bin/ps/keyword.c
index ae58881c9b8..8178408d4f3 100644
--- a/bin/ps/keyword.c
+++ b/bin/ps/keyword.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: keyword.c,v 1.8 1997/08/04 05:37:03 deraadt Exp $ */
+/* $OpenBSD: keyword.c,v 1.9 1997/08/08 19:30:09 millert Exp $ */
/* $NetBSD: keyword.c,v 1.12.6.1 1996/05/30 21:25:13 cgd Exp $ */
/*-
@@ -38,7 +38,7 @@
#if 0
static char sccsid[] = "@(#)keyword.c 8.5 (Berkeley) 4/2/94";
#else
-static char rcsid[] = "$OpenBSD: keyword.c,v 1.8 1997/08/04 05:37:03 deraadt Exp $";
+static char rcsid[] = "$OpenBSD: keyword.c,v 1.9 1997/08/08 19:30:09 millert Exp $";
#endif
#endif /* not lint */
@@ -80,60 +80,60 @@ int utime(), stime(), ixrss(), idrss(), isrss();
#define UIDFMT "u"
#define UIDLEN 5
#define UID(n1, n2, fn, off) \
- { n1, n2, NULL, 0, fn, UIDLEN, off, UINT32, UIDFMT }
+ { n1, n2, NULL, 0, fn, UIDLEN, 0, off, UINT32, UIDFMT }
#define GID(n1, n2, fn, off) UID(n1, n2, fn, off)
#define PIDFMT "d"
#define PIDLEN 5
#define PID(n1, n2, fn, off) \
- { n1, n2, NULL, 0, fn, PIDLEN, off, INT32, PIDFMT }
+ { n1, n2, NULL, 0, fn, PIDLEN, 0, off, INT32, PIDFMT }
#define USERLEN 8
VAR var[] = {
{"%cpu", "%CPU", NULL, 0, pcpu, 4},
{"%mem", "%MEM", NULL, 0, pmem, 4},
- {"acflag", "ACFLG", NULL, 0, pvar, 3, POFF(p_acflag), USHORT, "x"},
+ {"acflag", "ACFLG", NULL, 0, pvar, 3, 0, POFF(p_acflag), USHORT, "x"},
{"acflg", "", "acflag"},
{"blocked", "", "sigmask"},
{"caught", "", "sigcatch"},
{"command", "COMMAND", NULL, COMM|LJUST|USER, command, 16},
- {"cpu", "CPU", NULL, 0, pvar, 3, POFF(p_estcpu), UINT, "d"},
+ {"cpu", "CPU", NULL, 0, pvar, 3, 0, POFF(p_estcpu), UINT, "d"},
{"cputime", "", "time"},
- {"f", "F", NULL, 0, pvar, 7, POFF(p_flag), INT, "x"},
+ {"f", "F", NULL, 0, pvar, 7, 0, POFF(p_flag), INT, "x"},
{"flags", "", "f"},
GID("gid", "GID", evar, EOFF(e_ucred.cr_gid)),
- {"holdcnt", "HOLDCNT", NULL, 0, pvar, 8, POFF(p_holdcnt), INT, "d"},
+ {"holdcnt", "HOLDCNT", NULL, 0, pvar, 8, 0, POFF(p_holdcnt), INT, "d"},
{"ignored", "", "sigignore"},
- {"inblk", "INBLK", NULL, USER, rvar, 4, ROFF(ru_inblock), LONG, "d"},
+ {"inblk", "INBLK", NULL, USER, rvar, 4, 0, ROFF(ru_inblock), LONG, "d"},
{"inblock", "", "inblk"},
- {"jobc", "JOBC", NULL, 0, evar, 4, EOFF(e_jobc), SHORT, "d"},
- {"ktrace", "KTRACE", NULL, 0, pvar, 8, POFF(p_traceflag), INT, "x"},
+ {"jobc", "JOBC", NULL, 0, evar, 4, 0, EOFF(e_jobc), SHORT, "d"},
+ {"ktrace", "KTRACE", NULL, 0, pvar, 8, 0, POFF(p_traceflag), INT, "x"},
/* XXX */
- {"ktracep", "KTRACEP", NULL, 0, pvar, 8, POFF(p_tracep), KPTR, "x"},
+ {"ktracep", "KTRACEP", NULL, 0, pvar, 8, 0, POFF(p_tracep), KPTR, "x"},
{"lim", "LIM", NULL, 0, maxrss, 5},
{"login", "LOGIN", NULL, LJUST, logname, MAXLOGNAME},
{"logname", "", "login"},
{"lstart", "STARTED", NULL, LJUST|USER, lstarted, 28},
- {"majflt", "MAJFLT", NULL, USER, rvar, 4, ROFF(ru_majflt), LONG, "d"},
- {"minflt", "MINFLT", NULL, USER, rvar, 4, ROFF(ru_minflt), LONG, "d"},
- {"msgrcv", "MSGRCV", NULL, USER, rvar, 4, ROFF(ru_msgrcv), LONG, "d"},
- {"msgsnd", "MSGSND", NULL, USER, rvar, 4, ROFF(ru_msgsnd), LONG, "d"},
+ {"majflt", "MAJFLT", NULL, USER, rvar, 4, 0, ROFF(ru_majflt), LONG, "d"},
+ {"minflt", "MINFLT", NULL, USER, rvar, 4, 0, ROFF(ru_minflt), LONG, "d"},
+ {"msgrcv", "MSGRCV", NULL, USER, rvar, 4, 0, ROFF(ru_msgrcv), LONG, "d"},
+ {"msgsnd", "MSGSND", NULL, USER, rvar, 4, 0, ROFF(ru_msgsnd), LONG, "d"},
{"ni", "", "nice"},
- {"nice", "NI", NULL, 0, pvar, 2, POFF(p_nice), CHAR, "d"},
- {"nivcsw", "NIVCSW", NULL, USER, rvar, 5, ROFF(ru_nivcsw), LONG, "d"},
+ {"nice", "NI", NULL, 0, pvar, 2, 0, POFF(p_nice), CHAR, "d"},
+ {"nivcsw", "NIVCSW", NULL, USER, rvar, 5, 0, ROFF(ru_nivcsw), LONG, "d"},
{"nsignals", "", "nsigs"},
- {"nsigs", "NSIGS", NULL, USER, rvar, 4, ROFF(ru_nsignals), LONG, "d"},
- {"nswap", "NSWAP", NULL, USER, rvar, 4, ROFF(ru_nswap), LONG, "d"},
- {"nvcsw", "NVCSW", NULL, USER, rvar, 5, ROFF(ru_nvcsw), LONG, "d"},
+ {"nsigs", "NSIGS", NULL, USER, rvar, 4, 0, ROFF(ru_nsignals), LONG, "d"},
+ {"nswap", "NSWAP", NULL, USER, rvar, 4, 0, ROFF(ru_nswap), LONG, "d"},
+ {"nvcsw", "NVCSW", NULL, USER, rvar, 5, 0, ROFF(ru_nvcsw), LONG, "d"},
/* XXX */
- {"nwchan", "WCHAN", NULL, 0, pvar, 6, POFF(p_wchan), KPTR, "x"},
- {"oublk", "OUBLK", NULL, USER, rvar, 4, ROFF(ru_oublock), LONG, "d"},
+ {"nwchan", "WCHAN", NULL, 0, pvar, 6, 0, POFF(p_wchan), KPTR, "x"},
+ {"oublk", "OUBLK", NULL, USER, rvar, 4, 0, ROFF(ru_oublock), LONG, "d"},
{"oublock", "", "oublk"},
/* XXX */
- {"p_ru", "P_RU", NULL, 0, pvar, 6, POFF(p_ru), KPTR, "x"},
+ {"p_ru", "P_RU", NULL, 0, pvar, 6, 0, POFF(p_ru), KPTR, "x"},
/* XXX */
- {"paddr", "PADDR", NULL, 0, evar, 6, EOFF(e_paddr), KPTR, "x"},
+ {"paddr", "PADDR", NULL, 0, evar, 6, 0, EOFF(e_paddr), KPTR, "x"},
{"pagein", "PAGEIN", NULL, USER, pagein, 6},
{"pcpu", "", "%cpu"},
{"pending", "", "sig"},
@@ -142,22 +142,22 @@ VAR var[] = {
{"pmem", "", "%mem"},
PID("ppid", "PPID", evar, EOFF(e_ppid)),
{"pri", "PRI", NULL, 0, pri, 3},
- {"re", "RE", NULL, INF127, pvar, 3, POFF(p_swtime), UINT, "d"},
+ {"re", "RE", NULL, INF127, pvar, 3, 0, POFF(p_swtime), UINT, "d"},
GID("rgid", "RGID", evar, EOFF(e_pcred.p_rgid)),
/* XXX */
- {"rlink", "RLINK", NULL, 0, pvar, 8, POFF(p_back), KPTR, "x"},
+ {"rlink", "RLINK", NULL, 0, pvar, 8, 0, POFF(p_back), KPTR, "x"},
{"rss", "RSS", NULL, 0, p_rssize, 4},
{"rssize", "", "rsz"},
{"rsz", "RSZ", NULL, 0, rssize, 4},
UID("ruid", "RUID", evar, EOFF(e_pcred.p_ruid)),
{"ruser", "RUSER", NULL, LJUST, runame, USERLEN},
- {"sess", "SESS", NULL, 0, evar, 6, EOFF(e_sess), KPTR, "x"},
- {"sig", "PENDING", NULL, 0, pvar, 8, POFF(p_siglist), INT, "x"},
- {"sigcatch", "CAUGHT", NULL, 0, pvar, 8, POFF(p_sigcatch), UINT, "x"},
+ {"sess", "SESS", NULL, 0, evar, 6, 0, EOFF(e_sess), KPTR, "x"},
+ {"sig", "PENDING", NULL, 0, pvar, 8, 0, POFF(p_siglist), INT, "x"},
+ {"sigcatch", "CAUGHT", NULL, 0, pvar, 8, 0, POFF(p_sigcatch), UINT, "x"},
{"sigignore", "IGNORED",
- NULL, 0, pvar, 8, POFF(p_sigignore), UINT, "x"},
- {"sigmask", "BLOCKED", NULL, 0, pvar, 8, POFF(p_sigmask), UINT, "x"},
- {"sl", "SL", NULL, INF127, pvar, 3, POFF(p_slptime), UINT, "d"},
+ NULL, 0, pvar, 8, 0, POFF(p_sigignore), UINT, "x"},
+ {"sigmask", "BLOCKED", NULL, 0, pvar, 8, 0, POFF(p_sigmask), UINT, "x"},
+ {"sl", "SL", NULL, INF127, pvar, 3, 0, POFF(p_slptime), UINT, "d"},
{"start", "STARTED", NULL, LJUST|USER, started, 8},
{"stat", "", "state"},
{"state", "STAT", NULL, 0, state, 5},
@@ -166,19 +166,19 @@ VAR var[] = {
{"tdev", "TDEV", NULL, 0, tdev, 4},
{"time", "TIME", NULL, USER, cputime, 9},
PID("tpgid", "TGPID", evar, EOFF(e_tpgid)),
- {"tsess", "TSESS", NULL, 0, evar, 6, EOFF(e_tsess), KPTR, "x"},
+ {"tsess", "TSESS", NULL, 0, evar, 6, 0, EOFF(e_tsess), KPTR, "x"},
{"tsiz", "TSIZ", NULL, 0, tsize, 4},
{"tt", "TT", NULL, LJUST, tname, 3},
{"tty", "TTY", NULL, LJUST, longtname, 8},
{"ucomm", "UCOMM", NULL, LJUST, ucomm, MAXCOMLEN},
UID("uid", "UID", evar, EOFF(e_ucred.cr_uid)),
- {"upr", "UPR", NULL, 0, pvar, 3, POFF(p_usrpri), UCHAR, "d"},
+ {"upr", "UPR", NULL, 0, pvar, 3, 0, POFF(p_usrpri), UCHAR, "d"},
{"user", "USER", NULL, LJUST, uname, USERLEN},
{"usrpri", "", "upr"},
{"vsize", "", "vsz"},
{"vsz", "VSZ", NULL, 0, vsize, 5},
{"wchan", "WCHAN", NULL, LJUST, wchan, 6},
- {"xstat", "XSTAT", NULL, 0, pvar, 4, POFF(p_xstat), USHORT, "x"},
+ {"xstat", "XSTAT", NULL, 0, pvar, 4, 0, POFF(p_xstat), USHORT, "x"},
{""},
};
@@ -217,8 +217,9 @@ parsefmt(p)
while ((cp = strsep(&p, FMTSEP)) != NULL && *cp == '\0')
/* void */;
- if (!(v = findvar(cp)))
+ if (!(v = findvar(cp)) || v->parsed == 1)
continue;
+ v->parsed = 1;
if ((vent = malloc(sizeof(struct varent))) == NULL)
err(1, NULL);
vent->var = v;