[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] Rearrange bsd_getpt vs bsd_openpt and implement posix_openbt
From: |
Samuel Thibault |
Subject: |
Re: [PATCH] Rearrange bsd_getpt vs bsd_openpt and implement posix_openbt on BSD |
Date: |
Wed, 27 May 2020 11:16:03 +0200 |
User-agent: |
NeoMutt/20170609 (1.8.3) |
(Sorry, exchanged the two file names while writing the changelog)
Samuel Thibault, le mar. 26 mai 2020 22:43:00 +0200, a ecrit:
> * sysdeps/unix/sysv/linux/getpt.c (__getpt): Add oflag parameter, pass
> it to the _open call and rename to...
> (__bsd_openpt): ... new function.
> [!HAVE_GETPT] (__getpt): Reimplement on top of __bsd_openpt.
> (__posix_openpt): Replace stub with implementation on top of __bsd_openpt.
> (posix_openpt): Remove stub warning.
that was for sysdeps/unix/bsd/getpt.c
> * sysdeps/unix/bsd/getpt.c (__bsd_getpt): Replace prototype with
> __bsd_openpt prototype.
> (__getpt): Use __bsd_openpt instead of __bsd_getpt (as fallback when
> _posix_openpt fails).
> (getpt): Add alias
> (__getpt): Do not define.
> (HAVE_GETPT): Define.
and that was for sysdeps/unix/sysv/linux/getpt.c
> ---
> 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 75489aef28..45c91005af 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 1803b232c9..3785f90db0 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 <sysdeps/unix/bsd/getpt.c>
> --
> 2.26.2
>
--
Samuel
<m> argh, pi est plus grand que 2. Ca casse tout
-+- #ens-mim -+-