diff options
author | Christopher Faylor <me@cgf.cx> | 2011-11-08 00:05:49 +0400 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2011-11-08 00:05:49 +0400 |
commit | 65a6152f18884f2867b4350723bdcff5732e3f29 (patch) | |
tree | a9469b6d6b77ad6bbf2c1e6d1c7f6943a1566214 /winsup/cygwin/fhandler_tty.cc | |
parent | 78942629ac8b7683f64fb21b39a4c1eaee2b768b (diff) |
* cygwin.din (ptsname_r): Export.
* fhandler.cc (fhandler_base::ptsname_r): Define.
* fhandler.h (fhandler_base::ptsname): Delete.
(fhandler_base::ptsname_r): Declare.
(fhandler_pty_master::ptsname_r): Declare.
* fhandler_tty.cc (fhandler_pty_master::ptsname): Delete.
(fhandler_pty_master::ptsname_r): New reentrant function derived from previous
ptsname.
* syscalls.cc (ptsname_r): Implement new function with functionality similar to
Linux.
(ptsname): Use ptsname_r () to fill out buf.
* include/cygwin/stdlib.h (ptsname_r): Declare.
* include/cygwin/version.h: Bump CYGWIN_VERSION_API_MINOR to 255 to reflect
export of ptsname_r.
* pinfo.cc (pinfo::wait): Return bool rather than int.
* pinfo.h (info::wait): Ditto.
(pinfo::reattach): Define !defined(_SIGPROC_H) case for consistency.
* sigproc.cc (child_info_spawn::reattach_children): Use correct dwProcessId
rather than pid when duplicating handle.
Diffstat (limited to 'winsup/cygwin/fhandler_tty.cc')
-rw-r--r-- | winsup/cygwin/fhandler_tty.cc | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/winsup/cygwin/fhandler_tty.cc b/winsup/cygwin/fhandler_tty.cc index a8a56598e..c68211b66 100644 --- a/winsup/cygwin/fhandler_tty.cc +++ b/winsup/cygwin/fhandler_tty.cc @@ -1419,13 +1419,19 @@ fhandler_pty_master::ioctl (unsigned int cmd, void *arg) return 0; } -char * -fhandler_pty_master::ptsname () +int +fhandler_pty_master::ptsname_r (char *buf, size_t buflen) { - static char buf[TTY_NAME_MAX]; + char tmpbuf[TTY_NAME_MAX]; - __small_sprintf (buf, "/dev/pty%d", get_unit ()); - return buf; + __small_sprintf (tmpbuf, "/dev/pty%d", get_unit ()); + if (buflen <= strlen (tmpbuf)) + { + set_errno (ERANGE); + return ERANGE; + } + strcpy (buf, tmpbuf); + return 0; } void |