* fhandler.h (fhandler_termios::tcinit): Make second argument non-optional.

* fhandler_console.cc (fhandler_console::open): Specify second argument to
tcinit.
* fhandler_termios.cc (fhandler_termios::tcinit): Rename second argument.  Set
pgid to 0 if this is a pty master.
(fhandler_termios::tcgetpgrp): Just return value of pgid.  It will be zero if
not initialized.
* fhandler_tty.cc (fhandler_tty_slave::open): Specify second argument to
tcinit.
(fhandler_tty_slave::ioctl): Implement TIOCGPRP/TIOCSPGRP.  Fix switch
indentation.
(fhandler_tty_master::ioctl): Implement TIOCGPRP/TIOCSPGRP.
* include/sys/termios.h (TIOCGPGRP): Define similarly to Linux.
* include/sys/termios.h (TIOCSPGRP): Ditto.
This commit is contained in:
Christopher Faylor
2010-10-23 18:07:08 +00:00
parent 2e859e0759
commit 4ce975efd3
6 changed files with 68 additions and 27 deletions

View File

@@ -23,13 +23,13 @@ details. */
/* Common functions shared by tty/console */
void
fhandler_termios::tcinit (tty_min *this_tc, bool force)
fhandler_termios::tcinit (tty_min *this_tc, bool is_pty_master)
{
/* Initial termios values */
tc = this_tc;
if (force || !tc->initialized ())
if (is_pty_master || !tc->initialized ())
{
tc->ti.c_iflag = BRKINT | ICRNL | IXON;
tc->ti.c_oflag = OPOST | ONLCR;
@@ -55,7 +55,7 @@ fhandler_termios::tcinit (tty_min *this_tc, bool force)
tc->ti.c_cc[VWERASE] = CWERASE;
tc->ti.c_ispeed = tc->ti.c_ospeed = B38400;
tc->pgid = myself->pgid;
tc->pgid = is_pty_master ? 0 : myself->pgid;
tc->initialized (true);
}
}
@@ -108,7 +108,7 @@ fhandler_termios::tcgetpgrp ()
int
fhandler_pty_master::tcgetpgrp ()
{
return myself->ctty != -1 && myself->ctty == tc->ntty ? tc->pgid : 0;
return tc->pgid;
}
void