aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/mach/hurd/spawni.c
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2022-01-27 10:11:30 -0300
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2022-02-02 08:34:16 -0300
commit6289d28d3c4e56f34830cfb011c31271ef850418 (patch)
tree32d0c4d7af2c5a6a9d293a1ea05eb0d45313e450 /sysdeps/mach/hurd/spawni.c
parent3f35e7d193b7ff098467996ebf85b19c41d6d86e (diff)
downloadglibc-6289d28d3c4e56f34830cfb011c31271ef850418.tar
glibc-6289d28d3c4e56f34830cfb011c31271ef850418.tar.gz
glibc-6289d28d3c4e56f34830cfb011c31271ef850418.tar.bz2
glibc-6289d28d3c4e56f34830cfb011c31271ef850418.zip
posix: Replace posix_spawnattr_tc{get,set}pgrp_np with posix_spawn_file_actions_addtcsetpgrp_np
The posix_spawnattr_tcsetpgrp_np works on a file descriptor (the controlling terminal), so it would make more sense to actually fit it on the file actions API. Also, POSIX_SPAWN_TCSETPGROUP is not really required since it is implicit by the presence of tcsetpgrp file action. The posix/tst-spawn6.c is also fixed when TTY can is not present. Checked on x86_64-linux-gnu and i686-linux-gnu. Reviewed-by: Carlos O'Donell <carlos@redhat.com> Tested-by: Carlos O'Donell <carlos@redhat.com>
Diffstat (limited to 'sysdeps/mach/hurd/spawni.c')
-rw-r--r--sysdeps/mach/hurd/spawni.c26
1 files changed, 13 insertions, 13 deletions
diff --git a/sysdeps/mach/hurd/spawni.c b/sysdeps/mach/hurd/spawni.c
index bccdd013bf..f19b688411 100644
--- a/sysdeps/mach/hurd/spawni.c
+++ b/sysdeps/mach/hurd/spawni.c
@@ -390,19 +390,6 @@ retry:
if (!err && (flags & POSIX_SPAWN_SETPGROUP) != 0)
err = __proc_setpgrp (proc, new_pid, attrp->__pgrp);
- /* Set the controlling terminal. */
- if (!err && (flags & POSIX_SPAWN_TCSETPGROUP) != 0)
- {
- pid_t pgrp;
- /* Check if it is possible to avoid an extra syscall. */
- if ((attrp->__flags & POSIX_SPAWN_SETPGROUP) != 0 && attrp->__pgrp != 0)
- pgrp = attrp->__pgrp;
- else
- err = __proc_getpgrp (proc, new_pid, &pgrp);
- if (!err)
- err = __tcsetpgrp (attrp->__ctty_fd, pgrp);
- }
-
/* Set the effective user and group IDs. */
if (!err && (flags & POSIX_SPAWN_RESETIDS) != 0)
{
@@ -643,6 +630,19 @@ retry:
case spawn_do_closefrom:
err = do_closefrom (action->action.closefrom_action.from);
break;
+
+ case spawn_do_tcsetpgrp:
+ {
+ pid_t pgrp;
+ /* Check if it is possible to avoid an extra syscall. */
+ if ((attrp->__flags & POSIX_SPAWN_SETPGROUP)
+ != 0 && attrp->__pgrp != 0)
+ pgrp = attrp->__pgrp;
+ else
+ err = __proc_getpgrp (proc, new_pid, &pgrp);
+ if (!err)
+ err = __tcsetpgrp (action->action.setpgrp_action.fd, pgrp);
+ }
}
if (err)