aboutsummaryrefslogtreecommitdiff
path: root/usr.bin/su
diff options
context:
space:
mode:
authorDag-Erling Smørgrav <des@FreeBSD.org>2002-05-29 03:32:17 +0000
committerDag-Erling Smørgrav <des@FreeBSD.org>2002-05-29 03:32:17 +0000
commit743ea2081c88597fefee064bb7a1f359ed368145 (patch)
tree339ac0f4b338289bfe0b9342810fe685a51314f3 /usr.bin/su
parentcd849834682d2c27cb9d85bc767e63c5198cbcc2 (diff)
downloadsrc-743ea2081c88597fefee064bb7a1f359ed368145.tar.gz
src-743ea2081c88597fefee064bb7a1f359ed368145.zip
Make our child the leader of its own process group to avoid receiving
signals in its stead. This fixes the dread "zsh exits upon ^C" bug.
Notes
Notes: svn path=/head/; revision=97438
Diffstat (limited to 'usr.bin/su')
-rw-r--r--usr.bin/su/su.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/usr.bin/su/su.c b/usr.bin/su/su.c
index ec11570e7009..b90be97adb81 100644
--- a/usr.bin/su/su.c
+++ b/usr.bin/su/su.c
@@ -319,6 +319,8 @@ main(int argc, char *argv[])
child_pid = fork();
switch (child_pid) {
default:
+ setpgid(child_pid, child_pid);
+ tcsetpgrp(1, child_pid);
while ((ret_pid = waitpid(child_pid, &statusp, WUNTRACED)) != -1) {
if (WIFSTOPPED(statusp)) {
child_pgrp = tcgetpgrp(1);