diff options
Diffstat (limited to 'sysdeps/mach/hurd/ptsname.c')
-rw-r--r-- | sysdeps/mach/hurd/ptsname.c | 23 |
1 files changed, 19 insertions, 4 deletions
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) |