From dd1efd8c56f6e54667d66b2302f9590736546414 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Sat, 17 Feb 2018 23:26:45 +0100 Subject: [PATCH] hurd: Fix build on missing __ptsname_internal function * sysdeps/mach/hurd/ptsname.c: Include . (__ptsname_r): Move implementation to... (__ptsname_internal): ... new function. Add filling the STP structure. --- ChangeLog | 4 ++++ sysdeps/mach/hurd/ptsname.c | 23 +++++++++++++++++++---- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index fdf0e469bb..4e8411f9bf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,10 @@ * mach/Makefile (headers): Add mach/param.h. * sysdeps/mach/hurd/bits/param.h: Include . * sysdeps/mach/i386/mach/param.h: New file, defines EXEC_PAGESIZE + * sysdeps/mach/hurd/ptsname.c: Include . + (__ptsname_r): Move implementation to... + (__ptsname_internal): ... new function. Add filling the STP + structure. 2018-02-17 John David Anglin 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 #include +#include #include #include #include @@ -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)