On Solaris 11.4 the openpty(3) prototype lives in termios.h.
This commit is contained in:
@@ -110,7 +110,7 @@ static void del_io_events(bool nonblocking);
|
||||
static void sync_ttysize(struct exec_closure_pty *ec);
|
||||
static int safe_close(int fd);
|
||||
static void ev_free_by_fd(struct sudo_event_base *evbase, int fd);
|
||||
static void check_foreground(struct exec_closure_pty *ec);
|
||||
static pid_t check_foreground(struct exec_closure_pty *ec);
|
||||
static void add_io_events(struct sudo_event_base *evbase);
|
||||
static void schedule_signal(struct exec_closure_pty *ec, int signo);
|
||||
|
||||
@@ -487,22 +487,25 @@ log_winchange(unsigned int rows, unsigned int cols)
|
||||
|
||||
/*
|
||||
* Check whether we are running in the foregroup.
|
||||
* Updates the foreground global and does lazy init of the
|
||||
* the pty slave as needed.
|
||||
* Updates the foreground global and updates the window size.
|
||||
* Returns 0 if there is no tty, the foreground process group ID
|
||||
* on success, or -1 on failure (tty revoked).
|
||||
*/
|
||||
static void
|
||||
static pid_t
|
||||
check_foreground(struct exec_closure_pty *ec)
|
||||
{
|
||||
int ret = 0;
|
||||
debug_decl(check_foreground, SUDO_DEBUG_EXEC);
|
||||
|
||||
if (io_fds[SFD_USERTTY] != -1) {
|
||||
foreground = tcgetpgrp(io_fds[SFD_USERTTY]) == ec->ppgrp;
|
||||
if ((ret = tcgetpgrp(io_fds[SFD_USERTTY])) != -1) {
|
||||
foreground = ret == ec->ppgrp;
|
||||
|
||||
/* Also check for window size changes. */
|
||||
sync_ttysize(ec);
|
||||
/* Also check for window size changes. */
|
||||
sync_ttysize(ec);
|
||||
}
|
||||
}
|
||||
|
||||
debug_return;
|
||||
debug_return_int(ret);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -568,6 +571,7 @@ suspend_sudo(struct exec_closure_pty *ec, int signo)
|
||||
log_suspend(SIGCONT);
|
||||
|
||||
/* Check foreground/background status on resume. */
|
||||
/* XXX - handle missing tty */
|
||||
check_foreground(ec);
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user