From: Bruno Haible Date: Sun, 25 Apr 2010 20:18:48 +0000 (+0200) Subject: ptsname: Fix misuse of ttyname_r. X-Git-Tag: v0.1~4218 X-Git-Url: http://erislabs.org.uk/gitweb/?a=commitdiff_plain;h=1534c83a9aef13ea3d292ebc353f3897dfd57986;p=gnulib.git ptsname: Fix misuse of ttyname_r. --- diff --git a/ChangeLog b/ChangeLog index 9cdd83a51..9208e2fdd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2010-04-25 Bruno Haible + 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 + 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 a62ef2104..3c7a9e043 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';