Module Name: src
Committed By: christos
Date: Sat Sep 11 20:43:32 UTC 2021
Modified Files:
src/bin/sh: jobs.c jobs.h sh.1
Log Message:
Add jobs -Z (like in zsh(1)) to setproctitle(3).
To generate a diff of this commit:
cvs rdiff -u -r1.110 -r1.111 src/bin/sh/jobs.c
cvs rdiff -u -r1.24 -r1.25 src/bin/sh/jobs.h
cvs rdiff -u -r1.229 -r1.230 src/bin/sh/sh.1
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/bin/sh/jobs.c
diff -u src/bin/sh/jobs.c:1.110 src/bin/sh/jobs.c:1.111
--- src/bin/sh/jobs.c:1.110 Sun Apr 4 09:24:07 2021
+++ src/bin/sh/jobs.c Sat Sep 11 16:43:32 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: jobs.c,v 1.110 2021/04/04 13:24:07 kre Exp $ */
+/* $NetBSD: jobs.c,v 1.111 2021/09/11 20:43:32 christos Exp $ */
/*-
* Copyright (c) 1991, 1993
@@ -37,7 +37,7 @@
#if 0
static char sccsid[] = "@(#)jobs.c 8.5 (Berkeley) 5/4/95";
#else
-__RCSID("$NetBSD: jobs.c,v 1.110 2021/04/04 13:24:07 kre Exp $");
+__RCSID("$NetBSD: jobs.c,v 1.111 2021/09/11 20:43:32 christos Exp $");
#endif
#endif /* not lint */
@@ -550,11 +550,23 @@ jobscmd(int argc, char **argv)
int mode, m;
mode = 0;
- while ((m = nextopt("lp")))
- if (m == 'l')
+ while ((m = nextopt("lpZ")))
+ switch (m) {
+ case 'l':
mode = SHOW_PID;
- else
+ break;
+ case 'p':
mode = SHOW_PGID;
+ break;
+ case 'Z':
+ mode = SHOW_PROCTITLE;
+ break;
+ }
+
+ if (mode == SHOW_PROCTITLE) {
+ setproctitle("%s", *argptr);
+ return 0;
+ }
if (!iflag && !posix)
mode |= SHOW_NO_FREE;
Index: src/bin/sh/jobs.h
diff -u src/bin/sh/jobs.h:1.24 src/bin/sh/jobs.h:1.25
--- src/bin/sh/jobs.h:1.24 Sun Apr 4 09:24:07 2021
+++ src/bin/sh/jobs.h Sat Sep 11 16:43:32 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: jobs.h,v 1.24 2021/04/04 13:24:07 kre Exp $ */
+/* $NetBSD: jobs.h,v 1.25 2021/09/11 20:43:32 christos Exp $ */
/*-
* Copyright (c) 1991, 1993
@@ -49,6 +49,7 @@
#define SHOW_SIGNALLED 0x10 /* only if stopped/exited on signal */
#define SHOW_ISSIG 0x20 /* job was signalled */
#define SHOW_NO_FREE 0x40 /* do not free job */
+#define SHOW_PROCTITLE 0x80 /* set the process title */
/*
Index: src/bin/sh/sh.1
diff -u src/bin/sh/sh.1:1.229 src/bin/sh/sh.1:1.230
--- src/bin/sh/sh.1:1.229 Fri Sep 18 03:21:26 2020
+++ src/bin/sh/sh.1 Sat Sep 11 16:43:32 2021
@@ -1,4 +1,4 @@
-.\" $NetBSD: sh.1,v 1.229 2020/09/18 07:21:26 wiz Exp $
+.\" $NetBSD: sh.1,v 1.230 2021/09/11 20:43:32 christos Exp $
.\" Copyright (c) 1991, 1993
.\" The Regents of the University of California. All rights reserved.
.\"
@@ -31,7 +31,7 @@
.\"
.\" @(#)sh.1 8.6 (Berkeley) 5/4/95
.\"
-.Dd September 18, 2020
+.Dd September 11, 2021
.Dt SH 1
.\" everything except c o and s (keep them ordered)
.ds flags abCEeFfhIiLmnpquVvXx
@@ -2977,7 +2977,7 @@ or with
there is no process group leader (should not happen),
and otherwise exits with status 0.
.\"
-.It Ic jobs Oo Fl l Ns \&| Ns Fl p Oc Op Ar job ...
+.It Ic jobs Oo Fl l Ns \&| Ns Fl p \&| Fl Z Oc Op Ar job ...
Without
.Ar job
arguments,
@@ -3005,6 +3005,11 @@ With the
flag, the output contains only the process identifier of the lead
process.
.Pp
+With the
+.Fl Z
+flag, the process command line is set using
+.Xr setproctitle 3 .
+.Pp
In an interactive shell, each job shown as completed in the output
from the jobs command is implicitly waited for, and is removed from
the jobs table, never to be seen again.