summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2010-04-25 22:18:48 +0200
committerBruno Haible <bruno@clisp.org>2010-04-26 00:19:36 +0200
commit1534c83a9aef13ea3d292ebc353f3897dfd57986 (patch)
treea76ad62e330188c11fd012978026aec6dab3908f
parent64ee0bacb33ac4112f353a0d0771ff4f497d8fe3 (diff)
downloadgnulib-1534c83a9aef13ea3d292ebc353f3897dfd57986.tar.gz
ptsname: Fix misuse of ttyname_r.
-rw-r--r--ChangeLog6
-rw-r--r--lib/ptsname.c9
2 files changed, 13 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 9cdd83a51c..9208e2fdd9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2010-04-25 Bruno Haible <bruno@clisp.org>
+ ptsname: Fix misuse of ttyname_r.
+ * lib/ptsname.c (__ptsname_r): Use __ttyname_r's return value instead
+ of errno.
+
+2010-04-25 Bruno Haible <bruno@clisp.org>
+
ttyname_r: Make it work on Solaris 10.
* m4/ttyname_r.m4 (gl_FUNC_TTYNAME_R): Define HAVE_POSIXDECL_TTYNAME_R
if the system function has the POSIX declaration. Test whether the
diff --git a/lib/ptsname.c b/lib/ptsname.c
index a62ef2104a..3c7a9e043b 100644
--- a/lib/ptsname.c
+++ b/lib/ptsname.c
@@ -63,6 +63,7 @@ static int
__ptsname_r (int fd, char *buf, size_t buflen)
{
int save_errno = errno;
+ int err;
struct stat st;
if (buf == NULL)
@@ -81,8 +82,12 @@ __ptsname_r (int fd, char *buf, size_t buflen)
return ERANGE;
}
- if (__ttyname_r (fd, buf, buflen) != 0)
- return errno;
+ err = __ttyname_r (fd, buf, buflen);
+ if (err != 0)
+ {
+ __set_errno (err);
+ return errno;
+ }
buf[sizeof (_PATH_DEV) - 1] = 't';