On Thu, Oct 24, 2013 at 03:13:24AM +0300, Lauri Tirkkonen wrote:
> On Tue, Oct 22 2013 22:07:37 +0059, Jason McIntyre wrote:
> > On Tue, Oct 22, 2013 at 08:37:06PM +0300, [email protected] wrote:
> > > >Synopsis: ps(1) does not support -A, -o comm=foo
> > > >Category: user
> > > >Environment:
> > > System : OpenBSD 5.3
> > > Details : OpenBSD 5.3 (GENERIC) #50: Tue Mar 12 18:35:23 MDT 2013
> > >
> > > [email protected]:/usr/src/sys/arch/i386/compile/GENERIC
> > >
> > > Architecture: OpenBSD.i386
> > > Machine : i386
> > > >Description:
> > > ps(1) manual claims that the implementation is compliant to POSIX 2008,
> > > but:
> > > * -A is not supported (see below)
> > > * '-o comm=foo' gives an error (see below; interestingly '-o
> > > ucomm=foo' and '-o comm' work as expected)
> > >
> > > POSIX specifies both -A and the 'comm' field name; see
> > > http://pubs.opengroup.org/onlinepubs/9699919799/utilities/ps.html
> > > >How-To-Repeat:
> > > $ ps -A
> > > ps: unknown option -- A
> > > usage: ps [-aCceHhjkLlmrSTuvwx] [-M core] [-N system] [-O fmt] [-o fmt]
> > > [-p pid]
> > > [-t tty] [-U username] [-W swap]
> > >
> > > $ ps -o comm=foo >/dev/null
> > > ps: comm: illegal keyword specification
> > > >Fix:
> > > Add support for these options.
> > >
> >
> > i suspect you'd make a better case if you supplied a diff, and your
> > reasoning for wanting their inclusion.
>
> Attached patch for the -A flag (hopefully it's like it should be; I suck
> at CVS). I don't have a fix for the comm=foo issue, sorry. It looks like
> that applies to other fields designated aliases as well (such as 'args'
> which is an alias for command).
>
> The reason for wanting these is of course the desire to run programs
> that depend on this behavior (what are standards for :). As far as I can
> tell there is no other cross-platform way to get a process list than
> using ps, and if ps does not conform to the standard, well...
>
philip guenther committed a fix for the comm=foo issue. hopefully
someone can look at your diff and commit it, or explain why it isn;t
wanted.
> > - my hope for the posix compat claim is more that readers will
> > know that a specific app is specified by posix, that they
> > can safely use any of the options except those documented
> > as being extensions, and they can go read the spec
> > themselves if they want fine detail. i reasoned that if
> > people reported differences in behaviour we could document
> > them (and we do), but i simply did not document non-supported
> > options.
>
> What exactly does "safely" mean here? If you mean that as in "will be
> portable to other platforms" expecting their implementations to be
> fully conformant, shouldn't that go the other way around too? :)
>
yes, safely as in if you use an option we document, and don;t say it's
an extension, it should work on other (compliant) systems.
> > i guess we could document where posix mandates an option but we don;t
> > support it. there are very few, so it wouldn;t be a great deal of work.
> > not sure if i feel it's worth it though.
>
> That would be good in my opinion.
>
yes, i think i probably should do this. i'll try and find time...
> --
> Lauri Tirkkonen | +358 50 5341376 | lotheac @ IRCnet
> ? bin/ps/ps
> ? bin/ps/ps.1.manlint
> Index: bin/ps/ps.1
> ===================================================================
> RCS file: /cvs/src/bin/ps/ps.1,v
> retrieving revision 1.83
> diff -u -r1.83 ps.1
> --- bin/ps/ps.1 2 Aug 2012 03:18:48 -0000 1.83
> +++ bin/ps/ps.1 23 Oct 2013 23:56:34 -0000
> @@ -39,7 +39,7 @@
> .Sh SYNOPSIS
> .Nm ps
> .Sm off
> -.Op Fl aCceHhjkLlmrSTuvwx
> +.Op Fl aACceHhjkLlmrSTuvwx
> .Sm on
> .Op Fl M Ar core
> .Op Fl N Ar system
> @@ -73,6 +73,9 @@
> .Bl -tag -width Ds
> .It Fl a
> Display information about other users' processes as well as your own.
> +.It Fl A
> +Display information about all processes, including those without controlling
> +terminals.
> .It Fl C
> Change the way the CPU percentage is calculated by using a
> .Dq raw
-A goes before -a in SYNOPSIS, the option list, and usage().
jmc
> Index: bin/ps/ps.c
> ===================================================================
> RCS file: /cvs/src/bin/ps/ps.c,v
> retrieving revision 1.55
> diff -u -r1.55 ps.c
> --- bin/ps/ps.c 21 Apr 2012 03:14:50 -0000 1.55
> +++ bin/ps/ps.c 23 Oct 2013 23:56:34 -0000
> @@ -116,11 +116,15 @@
> ttydev = NODEV;
> memf = nlistf = swapf = NULL;
> while ((ch = getopt(argc, argv,
> - "acCegHhjkLlM:mN:O:o:p:rSTt:U:uvW:wx")) != -1)
> + "aAcCegHhjkLlM:mN:O:o:p:rSTt:U:uvW:wx")) != -1)
> switch (ch) {
> case 'a':
> all = 1;
> break;
> + case 'A':
> + all = 1;
> + xflg = 1;
> + break;
> case 'c':
> commandonly = 1;
> break;
> @@ -462,7 +466,7 @@
> usage(void)
> {
> (void)fprintf(stderr,
> - "usage: %s [-aCceHhjkLlmrSTuvwx] [-M core] [-N system] [-O fmt] [-o
> fmt] [-p pid]\n",
> + "usage: %s [-aACceHhjkLlmrSTuvwx] [-M core] [-N system] [-O fmt]
> [-o fmt] [-p pid]\n",
> __progname);
> (void)fprintf(stderr,
> "%-*s[-t tty] [-U username] [-W swap]\n", (int)strlen(__progname) +
> 8, "");