Date: Fri, 10 Oct 2003 14:54:05 +0200 (CEST) From: Jilles Tjoelker <jilles@stack.nl> To: FreeBSD-gnats-submit@FreeBSD.org Subject: bin/57833: PATCH: ps cannot change title for keywords that are aliases Message-ID: <20031010125405.DC33C1CC71@turtle.stack.nl> Resent-Message-ID: <200310101300.h9AD0beN059004@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 57833 >Category: bin >Synopsis: PATCH: ps cannot change title for keywords that are aliases >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Fri Oct 10 06:00:36 PDT 2003 >Closed-Date: >Last-Modified: >Originator: Jilles Tjoelker >Release: FreeBSD 5.1-CURRENT i386 >Organization: Eindhoven University of Technology >Environment: System: FreeBSD turtle.stack.nl 5.1-CURRENT FreeBSD 5.1-CURRENT #15: Thu Oct 9 11:43:55 CEST 2003 jilles@turtle.stack.nl:/usr/obj/usr/src/sys/TURTLE i386 (The world is a few days older than that.) >Description: Some keywords of the -o option of ps have aliases. Changing the header text for aliases (by adding =text after the keyword) does not work. An example is that stat is an alias for state. >How-To-Repeat: jilles@turtle /home/jilles$ ps -o stat=S -p $$ ps: stat: illegal keyword specification STAT Ss jilles@turtle /home/jilles$ ps -o state=S -p $$ S Ss (A useful special case is that setting all header texts to the empty string removes the header line altogether.) >Fix: I have a patch. This removes the possibility of aliases for multiple other keywords (e.g. an alias virt for pid,state,time,sl,re,pagein,vsz,rss,lim,tsiz,%cpu,%mem,command could make ps -o virt do the same as ps -v). These do not exist currently, though, and don't seem very useful to me. If it is required, the old parsefmt(v->alias, user); return NULL; code can be added instead of errx(1, "%s: keyword not found (alias)", p); The user argument to findvar() is no longer used. --- keyword.c.patch begins here --- --- /usr/src/bin/ps/keyword.c.orig Wed Aug 13 20:37:33 2003 +++ /usr/src/bin/ps/keyword.c Fri Oct 10 14:09:29 2003 @@ -296,6 +296,7 @@ VAR *v, key; char *hp; + (void)user; hp = strchr(p, '='); if (hp) *hp++ = '\0'; @@ -304,12 +305,11 @@ v = bsearch(&key, var, sizeof(var)/sizeof(VAR) - 1, sizeof(VAR), vcmp); if (v && v->alias) { - if (hp) { - warnx("%s: illegal keyword specification", p); - eval = 1; - } - parsefmt(v->alias, user); - return ((VAR *)NULL); + key.name = v->alias; + v = bsearch(&key, var, sizeof(var)/sizeof(VAR) - 1, + sizeof(VAR), vcmp); + if (v == NULL) + errx(1, "%s: keyword not found (alias)", p); } if (!v) { warnx("%s: keyword not found", p); --- keyword.c.patch ends here --- >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20031010125405.DC33C1CC71>