diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | sysdeps/mach/hurd/ptsname.c | 23 |
2 files changed, 23 insertions, 4 deletions
@@ -3,6 +3,10 @@ * mach/Makefile (headers): Add mach/param.h. * sysdeps/mach/hurd/bits/param.h: Include <mach/param.h>. * sysdeps/mach/i386/mach/param.h: New file, defines EXEC_PAGESIZE + * sysdeps/mach/hurd/ptsname.c: Include <sys/stat.h>. + (__ptsname_r): Move implementation to... + (__ptsname_internal): ... new function. Add filling the STP + structure. 2018-02-17 John David Anglin <danglin@gcc.gnu.org> diff --git a/sysdeps/mach/hurd/ptsname.c b/sysdeps/mach/hurd/ptsname.c index 08748a36b2..5c1dc6e981 100644 --- a/sysdeps/mach/hurd/ptsname.c +++ b/sysdeps/mach/hurd/ptsname.c @@ -18,6 +18,7 @@ #include <errno.h> #include <string.h> +#include <sys/stat.h> #include <hurd.h> #include <hurd/fd.h> #include <hurd/term.h> @@ -38,11 +39,9 @@ ptsname (int fd) } -/* Store at most BUFLEN characters of the pathname of the slave pseudo - terminal associated with the master FD is open on in BUF. - Return 0 on success, otherwise an error number. */ +/* We don't need STP, but fill it for conformity with the Linux version... */ int -__ptsname_r (int fd, char *buf, size_t buflen) +__ptsname_internal (int fd, char *buf, size_t buflen, struct stat64 *stp) { string_t peername; size_t len; @@ -58,7 +57,23 @@ __ptsname_r (int fd, char *buf, size_t buflen) return ERANGE; } + if (stp) + { + if (__xstat64 (_STAT_VER, peername, stp) < 0) + return errno; + } + memcpy (buf, peername, len); return 0; } + + +/* Store at most BUFLEN characters of the pathname of the slave pseudo + terminal associated with the master FD is open on in BUF. + Return 0 on success, otherwise an error number. */ +int +__ptsname_r (int fd, char *buf, size_t buflen) +{ + return __ptsname_internal (fd, buf, buflen, NULL); +} weak_alias (__ptsname_r, ptsname_r) |