From 28a1f85ad9d119814538cc2b182341a88057a02b Mon Sep 17 00:00:00 2001 From: GNU Libc Maintainers Date: Fri, 10 Jan 2020 22:21:25 +0000 Subject: [PATCH] posix_openpt https://sourceware.org/ml/libc-alpha/2019-12/msg00799.html to commit after 2.31 is released Gbp-Pq: Topic hurd-i386 Gbp-Pq: Name posix_openpt.diff --- sysdeps/unix/bsd/getpt.c | 18 ++++++++++-------- sysdeps/unix/sysv/linux/getpt.c | 7 ++++--- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/sysdeps/unix/bsd/getpt.c b/sysdeps/unix/bsd/getpt.c index 76f118dc1..d66941f59 100644 --- a/sysdeps/unix/bsd/getpt.c +++ b/sysdeps/unix/bsd/getpt.c @@ -41,7 +41,7 @@ const char __libc_ptyname2[] attribute_hidden = PTYNAME2; /* Open a master pseudo terminal and return its file descriptor. */ int -__getpt (void) +__bsd_openpt (int oflag) { char buf[sizeof (_PATH_PTY) + 2]; const char *p, *q; @@ -61,7 +61,7 @@ __getpt (void) s[1] = *q; - fd = __open (buf, O_RDWR); + fd = __open (buf, oflag); if (fd != -1) return fd; @@ -74,18 +74,20 @@ __getpt (void) return -1; } -#undef __getpt +#ifndef HAVE_GETPT +int +__getpt (void) +{ + return __bsd_openpt (O_RDWR); +} weak_alias (__getpt, getpt) +#endif #ifndef HAVE_POSIX_OPENPT -/* We cannot define posix_openpt in general for BSD systems. */ int __posix_openpt (int oflag) { - __set_errno (ENOSYS); - return -1; + return __bsd_openpt (oflag); } weak_alias (__posix_openpt, posix_openpt) - -stub_warning (posix_openpt) #endif diff --git a/sysdeps/unix/sysv/linux/getpt.c b/sysdeps/unix/sysv/linux/getpt.c index 96fe12d4a..55436cba8 100644 --- a/sysdeps/unix/sysv/linux/getpt.c +++ b/sysdeps/unix/sysv/linux/getpt.c @@ -31,7 +31,7 @@ #define _PATH_DEVPTS _PATH_DEV "pts" /* Prototype for function that opens BSD-style master pseudo-terminals. */ -extern int __bsd_getpt (void) attribute_hidden; +extern int __bsd_openpt (int oflag) attribute_hidden; /* Open a master pseudo terminal and return its file descriptor. */ int @@ -88,14 +88,15 @@ __getpt (void) { int fd = __posix_openpt (O_RDWR); if (fd == -1) - fd = __bsd_getpt (); + fd = __bsd_openpt (O_RDWR); return fd; } +weak_alias (__getpt, getpt) #define PTYNAME1 "pqrstuvwxyzabcde"; #define PTYNAME2 "0123456789abcdef"; -#define __getpt __bsd_getpt +#define HAVE_GETPT #define HAVE_POSIX_OPENPT #include -- 2.30.2