Mercurial > gnulib
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 Tue Oct 02 16:50:57 2012 -0600 +++ b/ChangeLog Wed Oct 03 08:45:59 2012 -0600 @@ -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 Tue Oct 02 16:50:57 2012 -0600 +++ b/lib/ptsname_r.c Wed Oct 03 08:45:59 2012 -0600 @@ -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)