Date: Wed, 12 Jun 2002 03:13:30 +0200 From: Cyrille Lefevre <cyrille.lefevre@laposte.net> To: Juli Mallett <jmallett@FreeBSD.org> Cc: standards@FreeBSD.org Subject: Re: cvs commit: www/en/projects/c99 index.sgml Message-ID: <20020612011330.GA45415@gits.dyndns.org> In-Reply-To: <20020610202431.A30207@FreeBSD.ORG> References: <200206070217.g572HH584853@freefall.freebsd.org> <20020606194448.A23497@FreeBSD.ORG> <20020611030857.GB14401@gits.dyndns.org> <20020610202431.A30207@FreeBSD.ORG>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Jun 10, 2002 at 08:24:33PM -0700, Juli Mallett wrote: > * Cyrille Lefevre <cyrille.lefevre@laposte.net> escriur=C3?res [snip] > task. There's a lot of different approaches that could be taken with dea= ling > with ps(1), as it's one of those unpleasent situations where compromises,= etc., some of the possible approaches are : 1) a la HPUX : use an environment variable (UNIX95) to deal w/ some standar= d. 2) a la Tru64 or AIX : BSD options aren't dash (-) prefixed. 3) a la SunOS : use different commands located in different paths. 4) yet another approach : use a different command name to deal w/ some stan= dard. 5) try to merge BSD and System V options. in my opinion, this is really possible except by breaking the former or the later standard since similar options may behave differently such as -u (different meaning) or -j (different output). 6) use a command line option to switch from one or the other behaviour. the current implementation complies w/ 1), 2), 4) and 6). > may be made, and it's important those things aren't in the hands of one s= ingle > person, and I'm an agreeable person, and as such happy to coordinate to c= ome ^^^^^^^^^^^^^^^^^^^^^^^^ I'm sure you are :) > up with the best conformant ps(1) we can have! :) >=20 > > ps(1) I'm working on. >=20 > Thanks. you're wecome. > > PS : I've tryed to subscribe to this list twince w/o success, any ideas= ? >=20 > majordomo can be difficult, a message to majordomo@FreeBSD.org with conte= nts > of "subscribe freebsd-standaards" or "subscribe standards" should work. found the problem, I've tryed to subscribe w/ different from (the one in the header) and subscribe (the one in the body) addresses while they MUST be the sames. [snip] > > differences between BSD and SUSV3 ps(1). also, the manual would > > have to be updated to reflect the reallity (any volunteer ? :). >=20 > The manual page may prove to be one of the least pleasent tasks, as while > SUS/POSIX has taken from BSD manpages before, we are not allowed to use > their text. don't know that ! [snip] > > new compilation flags : > >=20 > > COMPAT_BSD44 > > be strictly compatible w/ BSD44 ps, else : > > * -p, -t and -U respectively accept a list of pids, ttys > > or users instead of a single one. > > * -t accept ttyXX in addition to /dev/ttyXX and XX. > > * -U also accept uids in addition of user names. > > * output is formated more intelligently when combining > > options such as -j, -l, -u and -v. format strings are > > combined instead of being concatenated. > > * -o keyword=3Dheader now works for aliased keywords, also, > > -o keyword=3D don't print an empty line anymore, if any. > >=20 > > COMPAT_SUSV2 > > be compatible w/ SUSV2 ps if the SUSV2 environment variable > > has a non-zero value or if called as ps5. this may be > > overriden using the new -B (BSD) or -V (SUSV2) options. > > SUSV2 is automagically disabled when using pre BSD44 options. > > SUSV2 options are, in fact, almost the SYSV ones. > >=20 > > here is the usage string : > >=20 > > usage: ps [-AaBdefjl] [-C cmdlist] [-g pgrplist] [-G grouplist] [-o fmt] > > [-p pidlist] [-t ttylist] [-u userlist] [-U userlist] > > [-m core] [-n system] [-w swap] > >=20 > > here are the new -o keywords w/ their BSD44 counterpart, > > if any, in parentheses : > >=20 > > addr (paddr), args (command), c, comm (command), > > etime, group, l (state), rgroup and stime. > > and the ones which are affected when SUSV2 is enable : > >=20 > > pri and time. forgot `sid' which isn't implemented yet. > Why can't these be there by default? there are, but their output is different from BSD and SystemV. let's try : # ps5 -VO pri,time | head -2 PID PRI TIME TT COMMAND 1326 32 00:00:00 p0- sh # ps5 -BO pri,time | head -2 PID PRI TIME TT STAT COMMAND 1326 10 0:00.53 p0- I /bin/sh /etc/rc.local.netstat PS : just added -O to SystemV options as SUSV3 authorize it on BSD implementations of ps(1). > > NO_SWAP > > disable -W option since kvm(3) doesn't read swap for almost > > 10 years. > >=20 > > also, single-linked tail queues have been converted to queue(3). >=20 > This is a mixed thing. Some people will rightly say that conversion of a > simplistic paradigm of code to the queue(3) constructs can be obfuscatory, > and certainly macros which evolved after 4.3BSD sometimes differ in their > meaning. TAILQ_FOREACH{,_REVERSE} on OSX bit me particularly hard. I do that last year after reading a thread asking to do so. ask O'brien (probably) for details :) > > Index: Makefile > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > RCS file: /home/ncvs/src/bin/ps/Makefile,v > > retrieving revision 1.13 > > diff -u -r1.13 Makefile > > --- Makefile 17 Nov 1999 13:37:30 -0000 1.13 > > +++ Makefile 11 Jun 2002 03:02:38 -0000 > > @@ -9,7 +9,12 @@ > > # keep ps from being an unnecessary load > > # on large systems. > > # > > -CFLAGS+=3D-I${.CURDIR}/../../sys -DLAZY_PS > > +CFLAGS=3D -g > > +CFLAGS+=3D -I${.CURDIR}/../../sys > > +CFLAGS+=3D -DBACKWARD_COMPATIBILITY > > +CFLAGS+=3D -DLAZY_PS > > +# CFLAGS+=3D -DCOMPAT_BSD44 > > +CFLAGS+=3D -DCOMPAT_SUSV2 > > DPADD=3D ${LIBM} ${LIBKVM} > > LDADD=3D -lm -lkvm > > #BINGRP=3D kmem >=20 > There should be a make(1) tunable to handle the SUS compatability so that since BSD and SystemV ps are really different in some way, it would be better to consider a runtime (evan sysctl, why not ?) tunable to deal w/ SUS compatability than a static make(1) tunable. considering a runtime tunable, the current DEFINES in use are more there to mark the code change than to make a choice between behaviours. w/ COMPAT_BSD44 undefined, -p and such options allow a pidlist and combining -j and such options is done more intelligently than before. w/ COMPAT_SUSV2 define, you may switch from BSD and SUS behaviour. that's all. in other words, I'm really against breaking whatever compatibility using some compromise. > a system being tested for standards conformance could have a flag such > as: > POSIX_CONFORM=3D NOBSD >=20 > To disable BSD things that conflict with POSIX and use POSIX instead, or: > POSIX_CONFORM=3D NOCONFLICT >=20 > To use POSIX things where there's no conflict with BSD, but which are not > meaningful in BSD (things related to sysv runtimes come to mind).=20 IMHO, nothing is not meaningfull in BSD nor nothing is meaningfull in Syste= mV. they just do the same work differently and should continue this way to not broke anything. > The rest of it looks straightforward in places, but some of the changes l= ook > a bit big and I'd like to see what later comes up wrt susv3 and patches t= o the > current version of ps(1). well, I should have run diff -w to reduce the diffs but not so much (64 lines less, that's all). for instance, I've just reprinted all ps(1) manual pages from BSD, SUSV3, HP-UX 11, Tru64 5, Solaris 9 and AIX 5 and will try make a big table of compatibilities against each other with a priority to BSD and SUSV3 of course, then, I could make a good comparison w/ the current code and finish the work :) Cyrille. --=20 Cyrille Lefevre mailto:cyrille.lefevre@laposte.net To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-standards" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020612011330.GA45415>