From: Eric Blake Date: Wed, 3 Oct 2012 14:45:59 +0000 (-0600) Subject: ptsname_r: support ptys returned by FreeBSD posix_openpt X-Git-Tag: v0.1~404 X-Git-Url: http://erislabs.net/gitweb/?p=gnulib.git;a=commitdiff_plain;h=2a9edc6f2b02a05553d266117ddee80b3e0a3749 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/. --- diff --git a/ChangeLog b/ChangeLog index 70fd40681..a83aa5e32 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2012-10-03 Eric Blake + + 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 pselect: reject invalid file descriptors diff --git a/lib/ptsname_r.c b/lib/ptsname_r.c index 140a75b92..145d5b1e8 100644 --- a/lib/ptsname_r.c +++ b/lib/ptsname_r.c @@ -177,7 +177,8 @@ __ptsname_r (int fd, char *buf, size_t buflen) 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)