aboutsummaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorJilles Tjoelker <jilles@FreeBSD.org>2020-12-26 14:27:33 +0000
committerJilles Tjoelker <jilles@FreeBSD.org>2020-12-26 14:27:33 +0000
commitab41d7f371f52097ab0cb183565f1d8e7c122760 (patch)
tree8518887527b11ab6caa017c8096b0090c06d6a52 /bin
parentb63eeef41f9335f653c608c2000bea6c28a8a823 (diff)
downloadsrc-ab41d7f371f52097ab0cb183565f1d8e7c122760.tar.gz
src-ab41d7f371f52097ab0cb183565f1d8e7c122760.zip
sh: Explain duplicate tcsetpgrp() calls
This is a comment change only.
Diffstat (limited to 'bin')
-rw-r--r--bin/sh/jobs.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/bin/sh/jobs.c b/bin/sh/jobs.c
index c46e526eab67..c0ba7d75e16d 100644
--- a/bin/sh/jobs.c
+++ b/bin/sh/jobs.c
@@ -928,7 +928,12 @@ forkshell(struct job *jp, union node *n, int mode)
pgrp = jp->ps[0].pid;
if (setpgid(0, pgrp) == 0 && mode == FORK_FG &&
ttyfd >= 0) {
- /*** this causes superfluous TIOCSPGRPS ***/
+ /*
+ * Each process in a pipeline must have the tty
+ * pgrp set before running its code.
+ * Only for pipelines of three or more processes
+ * could this be reduced to two calls.
+ */
if (tcsetpgrp(ttyfd, pgrp) < 0)
error("tcsetpgrp failed, errno=%d", errno);
}