diff options
| author | Bruno Haible <bruno@clisp.org> | 2019-01-26 14:31:56 +0100 |
|---|---|---|
| committer | Michael Kerrisk <mtk.manpages@gmail.com> | 2020-04-25 21:44:06 +0200 |
| commit | 8d4d268f0e23ad54f1c26eaa51aec13de9f865d8 (patch) | |
| tree | 8d2ee0a1b42577fefebd4a372aa9d12b19e918c7 /man3 | |
| parent | c6364a1b33cb090394f1befe2f8643ca2225216a (diff) | |
| download | man-pages-8d4d268f0e23ad54f1c26eaa51aec13de9f865d8.tar.gz | |
ptsname.3: Fix description of failure behaviour of ptsname_r()
The Linux man page for ptsname_r, when describing the behaviour
in the error case, is
- not consistent with the future POSIX standard (POSIX Issue 8).
- not consistent with musl libc.
Find attached a patch to
- keep it consistent with what glibc does,
- make it consistent with musl libc,
- make it consistent with the future POSIX standard (POSIX
Issue 8).
Details:
glibc's implementation of ptsname_r, when it fails, returns the
error code as return value AND sets errno. See
https://sourceware.org/git/?p=glibc.git;a=blob;f=login/ptsname.c
https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/mach/hurd/ptsname.c
https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/ptsname.c
musl's implementation of ptsname_r, when it fails, returns the error code
but does NOT set errno. See
https://git.musl-libc.org/cgit/musl/tree/src/misc/pty.c
The proposal to add ptsname_r to POSIX, with text
"If successful, the ptsname_r( ) function shall return zero.
Otherwise, an error number shall be returned to indicate the
error."
has been accepted for inclusion in POSIX Issue 8.
http://austingroupbugs.net/view.php?id=508
Therefore a portable program should look at the return value from
ptsname_r, NOT the errno value. The current text in the man page
suggests to look at the errno value, which is wrong (because of
musl libc) and not future-proof (because of future POSIX).
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
Diffstat (limited to 'man3')
| -rw-r--r-- | man3/ptsname.3 | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/man3/ptsname.3 b/man3/ptsname.3 index 394138b7a4..0137fe741f 100644 --- a/man3/ptsname.3 +++ b/man3/ptsname.3 @@ -63,12 +63,9 @@ On failure, NULL is returned. On success, .BR ptsname_r () returns 0. -On failure, a nonzero value is returned -and -.I errno -is set to indicate the error. -.\" In fact the errno value is also returned as the function -.\" result -- MTK, Dec 04 +On failure, an error number is returned to indicate the error. +.\" In glibc, the error number is not only returned as the return value +.\" but also stored in errno. But this is not true for musl libc. .SH ERRORS .TP .B EINVAL |
