From 1534c83a9aef13ea3d292ebc353f3897dfd57986 Mon Sep 17 00:00:00 2001
From: Bruno Haible <bruno@clisp.org>
Date: Sun, 25 Apr 2010 22:18:48 +0200
Subject: [PATCH] ptsname: Fix misuse of ttyname_r.

---
 ChangeLog     | 6 ++++++
 lib/ptsname.c | 9 +++++++--
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 9cdd83a51c..9208e2fdd9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+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.
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';
 
-- 
2.30.2