Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2011-11-08 00:05:49 +0400
committerChristopher Faylor <me@cgf.cx>2011-11-08 00:05:49 +0400
commit65a6152f18884f2867b4350723bdcff5732e3f29 (patch)
treea9469b6d6b77ad6bbf2c1e6d1c7f6943a1566214 /winsup/cygwin/fhandler_tty.cc
parent78942629ac8b7683f64fb21b39a4c1eaee2b768b (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.cc16
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