diff options
author | Christopher Faylor <me@cgf.cx> | 2008-03-22 21:04:16 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2008-03-22 21:04:16 +0000 |
commit | 1ffe3e67b1f055a8a81a0e6cefad78f0df795aa6 (patch) | |
tree | ed5f5769fbd3fe5e94aeabec3c59976e9fcec8c0 /winsup/cygwin/fhandler_tty.cc | |
parent | b00c2ef98fa090eb395212c47b427cf3ebae0d79 (diff) | |
download | cygnal-1ffe3e67b1f055a8a81a0e6cefad78f0df795aa6.tar.gz cygnal-1ffe3e67b1f055a8a81a0e6cefad78f0df795aa6.tar.bz2 cygnal-1ffe3e67b1f055a8a81a0e6cefad78f0df795aa6.zip |
* 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.
Diffstat (limited to 'winsup/cygwin/fhandler_tty.cc')
-rw-r--r-- | winsup/cygwin/fhandler_tty.cc | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/winsup/cygwin/fhandler_tty.cc b/winsup/cygwin/fhandler_tty.cc index 44a811ab3..26620b7cd 100644 --- a/winsup/cygwin/fhandler_tty.cc +++ b/winsup/cygwin/fhandler_tty.cc @@ -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. */ |