Module Name: src Committed By: cjep Date: Fri Jun 4 06:28:42 UTC 2021
Modified Files: src/bin/ps: ps.1 ps.c Log Message: PR standards/11223 Add -G to take a single group argument heading towards POSIX.2 compliance. Patch from jperkin and reviewed by simonb. To generate a diff of this commit: cvs rdiff -u -r1.110 -r1.111 src/bin/ps/ps.1 cvs rdiff -u -r1.93 -r1.94 src/bin/ps/ps.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/bin/ps/ps.1 diff -u src/bin/ps/ps.1:1.110 src/bin/ps/ps.1:1.111 --- src/bin/ps/ps.1:1.110 Tue Aug 6 18:07:51 2019 +++ src/bin/ps/ps.1 Fri Jun 4 06:28:42 2021 @@ -1,4 +1,4 @@ -.\" $NetBSD: ps.1,v 1.110 2019/08/06 18:07:51 kamil Exp $ +.\" $NetBSD: ps.1,v 1.111 2021/06/04 06:28:42 cjep Exp $ .\" .\" Copyright (c) 1980, 1990, 1991, 1993, 1994 .\" The Regents of the University of California. All rights reserved. @@ -46,6 +46,7 @@ .Op Fl p Ar pid .Op Fl t Ar tty .Op Fl U Ar user +.Op Fl G Ar group .Op Fl W Ar swap .Nm .Fl L @@ -110,6 +111,9 @@ relative to each other. Display the environment as well. The environment for other users' processes can only be displayed by the super-user. +.It Fl G Ar group +Display processes belonging to the users belonging to the specified group, +given either as a group name or a gid. .It Fl h Repeat the information header as often as necessary to guarantee one header per page of information. @@ -714,3 +718,7 @@ Since .Nm cannot run faster than the system and is run as any other scheduled process, the information it displays can never be exact. +.Pp +The +.Fl G +option should ideally take a list instead of a single group. Index: src/bin/ps/ps.c diff -u src/bin/ps/ps.c:1.93 src/bin/ps/ps.c:1.94 --- src/bin/ps/ps.c:1.93 Sun Sep 15 15:27:50 2019 +++ src/bin/ps/ps.c Fri Jun 4 06:28:42 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: ps.c,v 1.93 2019/09/15 15:27:50 kamil Exp $ */ +/* $NetBSD: ps.c,v 1.94 2021/06/04 06:28:42 cjep Exp $ */ /* * Copyright (c) 2000-2008 The NetBSD Foundation, Inc. @@ -68,7 +68,7 @@ __COPYRIGHT("@(#) Copyright (c) 1990, 19 #if 0 static char sccsid[] = "@(#)ps.c 8.4 (Berkeley) 4/2/94"; #else -__RCSID("$NetBSD: ps.c,v 1.93 2019/09/15 15:27:50 kamil Exp $"); +__RCSID("$NetBSD: ps.c,v 1.94 2021/06/04 06:28:42 cjep Exp $"); #endif #endif /* not lint */ @@ -86,6 +86,7 @@ __RCSID("$NetBSD: ps.c,v 1.93 2019/09/15 #include <err.h> #include <errno.h> #include <fcntl.h> +#include <grp.h> #include <kvm.h> #include <limits.h> #include <locale.h> @@ -104,8 +105,8 @@ __RCSID("$NetBSD: ps.c,v 1.93 2019/09/15 * ARGOPTS must contain all option characters that take arguments * (except for 't'!) - it is used in kludge_oldps_options() */ -#define GETOPTSTR "aAcCdeghjk:LlM:mN:O:o:p:rSsTt:U:uvW:wx" -#define ARGOPTS "kMNOopUW" +#define GETOPTSTR "aAcCdegG:hjk:LlM:mN:O:o:p:rSsTt:U:uvW:wx" +#define ARGOPTS "GkMNOopUW" struct varlist displaylist = SIMPLEQ_HEAD_INITIALIZER(displaylist); struct varlist sortlist = SIMPLEQ_HEAD_INITIALIZER(sortlist); @@ -253,6 +254,26 @@ main(int argc, char *argv[]) break; case 'g': break; /* no-op */ + case 'G': + if (*optarg != '\0') { + struct group *gr; + char *ep; + + what = KERN_PROC_GID; + gr = getgrnam(optarg); + if (gr == NULL) { + errno = 0; + flag = strtoul(optarg, &ep, 10); + if (errno) + err(1, "%s", optarg); + if (*ep != '\0') + errx(1, "%s: illegal group", + optarg); + } else + flag = gr->gr_gid; + } + break; + case 'h': prtheader = ws.ws_row > 5 ? ws.ws_row : 22; break; @@ -945,7 +966,7 @@ usage(void) (void)fprintf(stderr, "usage:\t%s\n\t %s\n\t%s\n", "ps [-AaCcdehjlmrSsTuvwx] [-k key] [-M core] [-N system] [-O fmt]", - "[-o fmt] [-p pid] [-t tty] [-U user] [-W swap]", + "[-o fmt] [-p pid] [-t tty] [-U user] [-G group] [-W swap]", "ps -L"); exit(1); /* NOTREACHED */