* dtable.cc: Define various device-related string constants as wide character
constants. (dtable::init_std_file_from_handle): Reorganize pipe handling to try to catch special tty case. (build_fh_name_worker): Declare for common use. (build_fh_name): Define char version. (build_fh_name): Define (currently unused) UNICODE_STRING version. (decode_tty): Detect if pipe is actually a cygwin tty, returning the tty name in the buffer. (handle_to_fn): Reorganize to use wide characters. * dtable.h (build_fh_name): Declare (currently unused) UNICODE_STRING version. * fhandler_tty.cc (fhandler_pty_master::setup): Use fhandler_pipe::create_selectable to create a pipe with a given name. * pipe.cc (pipe_handler): Make returned handle inheritable. (fhandler_pipe::create_selectable): Take an optional name. Use a standard cygwin introducer for the name. * path.cc (path_conv::check): Make first argument const. * path.h (path_conv::check): Ditto for declaration. (path_conv::path_conv): Ditto for UNICODE_STRING version.
This commit is contained in:
@ -1352,6 +1352,7 @@ fhandler_tty_master::init_console ()
|
||||
bool
|
||||
fhandler_pty_master::setup (bool ispty)
|
||||
{
|
||||
int res;
|
||||
tty& t = *cygwin_shared->tty[get_unit ()];
|
||||
|
||||
tcinit (&t, true); /* Set termios information. Force initialization. */
|
||||
@ -1362,13 +1363,24 @@ fhandler_pty_master::setup (bool ispty)
|
||||
/* Create communication pipes */
|
||||
|
||||
/* FIXME: should this be sec_none_nih? */
|
||||
if (!CreatePipe (&from_master, &get_output_handle (), &sec_all, 128 * 1024))
|
||||
|
||||
/* Create communication pipes */
|
||||
|
||||
char pipename[sizeof("ttyNNNN-from-master")];
|
||||
__small_sprintf (pipename, "tty%d-from-master", get_unit ());
|
||||
res = fhandler_pipe::create_selectable (&sec_all_nih, from_master,
|
||||
get_output_handle (), 128 * 1024,
|
||||
pipename);
|
||||
if (res)
|
||||
{
|
||||
errstr = "input pipe";
|
||||
goto err;
|
||||
}
|
||||
|
||||
if (!CreatePipe (&get_io_handle (), &to_master, &sec_all, 128 * 1024))
|
||||
__small_sprintf (pipename, "tty%d-to-master", get_unit ());
|
||||
res = fhandler_pipe::create_selectable (&sec_all_nih, get_io_handle (),
|
||||
to_master, 128 * 1024, pipename);
|
||||
if (res)
|
||||
{
|
||||
errstr = "output pipe";
|
||||
goto err;
|
||||
@ -1380,7 +1392,7 @@ fhandler_pty_master::setup (bool ispty)
|
||||
|
||||
need_nl = 0;
|
||||
|
||||
/* We do not open allow the others to open us (for handle duplication)
|
||||
/* We do not allow others to open us (for handle duplication)
|
||||
but rely on cygheap->inherited_ctty for descendant processes.
|
||||
In the future the cygserver may allow access by others. */
|
||||
|
||||
|
Reference in New Issue
Block a user