git: 1ee62f354ab0 - stable/14 - ps(1): Make '-a' and '-A' always show all processes

From: Olivier Certner <olce_at_FreeBSD.org>
Date: Thu, 01 May 2025 19:51:41 UTC
The branch stable/14 has been updated by olce:

URL: https://cgit.FreeBSD.org/src/commit/?id=1ee62f354ab02e25b8c13b8df331d947aa50dff8

commit 1ee62f354ab02e25b8c13b8df331d947aa50dff8
Author:     Olivier Certner <olce@FreeBSD.org>
AuthorDate: 2025-03-14 21:42:08 +0000
Commit:     Olivier Certner <olce@FreeBSD.org>
CommitDate: 2025-05-01 19:37:05 +0000

    ps(1): Make '-a' and '-A' always show all processes
    
    When combined with other options affecting the selection of processes,
    except for '-X' and '-x', option '-a' would have no effect (and '-A'
    would reduce to just '-x').  This was in contradiction with the rule
    applying to all other selection options stating that one process is
    listed as soon as any of these options has been specified and selects
    it, which is both mandated by POSIX and arguably a natural expectation.
    
    MFC after:      3 days
    Sponsored by:   The FreeBSD Foundation
    Differential Revision:  https://reviews.freebsd.org/D49617 (code)
    Differential Revision:  https://reviews.freebsd.org/D49618 (manual page)
    
    (cherry picked from commit 93a94ce731a89b5643021b486da599e7963da232)
---
 bin/ps/ps.1 | 25 +++----------------------
 bin/ps/ps.c |  9 ++++++++-
 2 files changed, 11 insertions(+), 23 deletions(-)

diff --git a/bin/ps/ps.1 b/bin/ps/ps.1
index d823df48c093..0a6a5555ba35 100644
--- a/bin/ps/ps.1
+++ b/bin/ps/ps.1
@@ -80,7 +80,7 @@ and
 .Fl x
 options.
 Except for options
-.Fl A , a , X ,
+.Fl X
 and
 .Fl x ,
 as soon as one of them appears, it inhibits the default process selection, i.e.,
@@ -215,11 +215,6 @@ see
 and
 .Fl x
 .Pc .
-Currently, this option has no effect if any other option selecting processes to
-display is present, except for
-.Fl X
-and
-.Fl x .
 If the
 .Va security.bsd.see_other_uids
 sysctl is set to zero, this option is honored only if the real user ID of the
@@ -965,13 +960,13 @@ which is the current behavior of option
 .Pc .
 .Pp
 However, options
-.Fl G , l , o , p ,
+.Fl A , a , G , l , o , p ,
 and
 .Fl t
 behave as prescribed by
 .St -p1003.1-2024 .
 Options
-.Fl A , a , f , U ,
+.Fl f , U ,
 and
 .Fl w
 currently do not, but may be changed to in the future.
@@ -1021,20 +1016,6 @@ implementation (for other BSDs, illumos or Linux) behaves like this.
 For all these reasons, the behavior is expected to be changed soon to using the
 effective user ID instead.
 .Pp
-The
-.Fl a
-option has no effect if other options affecting the selection of processes are
-used, except for (non-)filters
-.Fl X
-and
-.Fl x.
-Option
-.Fl A
-has the same restriction.
-This idiosyncrasy is both in contradiction with
-.St -p1003.1-2024
-and arguably with common sense, and is expected to be removed soon.
-.Pp
 .Nm ps
 currently does not correctly limit the ouput width, and in most cases does not
 limit it at all when it should.
diff --git a/bin/ps/ps.c b/bin/ps/ps.c
index db339a765987..ebfc3f0bb1e1 100644
--- a/bin/ps/ps.c
+++ b/bin/ps/ps.c
@@ -528,7 +528,14 @@ main(int argc, char *argv[])
 	free(keywords_info);
 	keywords_info = NULL;
 
-	if (!all && nselectors == 0) {
+	if (all)
+		/*
+		 * We have to display all processes, regardless of other
+		 * options.
+		 */
+		nselectors = 0;
+	else if (nselectors == 0) {
+		/* Default is to request our processes only. */
 		uidlist.l.ptr = malloc(sizeof(uid_t));
 		if (uidlist.l.ptr == NULL)
 			xo_errx(1, "malloc failed");