changeset 17125:99a0d94bccb1

ptsname_r: support ptys returned by FreeBSD posix_openpt The recent change to ptsname exposed a latent bug in our ptsname_r implementation on FreeBSD 8.2 - there, posix_openpt returns a device where ttyname_r already lists it as /dev/pts/0. * lib/ptsname_r.c (__ptsname_r): Don't munge name if it already lives in /dev/pts/.
author Eric Blake <eblake@redhat.com>
date Wed, 03 Oct 2012 08:45:59 -0600
parents efd310032e74
children 1ee102a293e1
files ChangeLog lib/ptsname_r.c
diffstat 2 files changed, 8 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2012-10-03  Eric Blake  <eblake@redhat.com>
+
+	ptsname_r: support ptys returned by FreeBSD posix_openpt
+	* lib/ptsname_r.c (__ptsname_r): Don't munge name if it already
+	lives in /dev/pts/.
+
 2012-10-02  Eric Blake  <eblake@redhat.com>
 
 	pselect: reject invalid file descriptors
--- a/lib/ptsname_r.c
+++ b/lib/ptsname_r.c
@@ -177,7 +177,8 @@
       return errno;
     }
 
-  buf[sizeof (_PATH_DEV) - 1] = 't';
+  if (strncmp(buf, "/dev/pts/", strlen("/dev/pts/")) != 0)
+    buf[sizeof (_PATH_DEV) - 1] = 't';
 #endif
 
   if (__stat (buf, &st) < 0)