summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2020-11-08 14:06:56 +0000
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2020-11-08 14:06:56 +0000
commitdfe2e7a5627f2c7bdc298fc714dbf12f7666fa2a (patch)
treed8aa01f9d6de9672feec3741118be9e6ca030129
parentaa11ab99530aea57fa2b8fa934a7c9dd0bfa9131 (diff)
downloadglibc-dfe2e7a5627f2c7bdc298fc714dbf12f7666fa2a.tar.gz
bsd unlockpt: unlockpt needs to fail with EINVAL, not ENOTTY
The EINVAL error code is mandated by POSIX, while ptsname_r returns ENOTTY, so we need to translate.
-rw-r--r--sysdeps/unix/bsd/unlockpt.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/sysdeps/unix/bsd/unlockpt.c b/sysdeps/unix/bsd/unlockpt.c
index d8b7f0cae7..e609685c2f 100644
--- a/sysdeps/unix/bsd/unlockpt.c
+++ b/sysdeps/unix/bsd/unlockpt.c
@@ -20,6 +20,7 @@
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
+#include <errno.h>
/* Unlock the slave pseudo terminal associated with the master pseudo
@@ -31,6 +32,10 @@ unlockpt (int fd)
/* BSD doesn't have a lock, but it does have `revoke'. */
if (__ptsname_r (fd, buf, sizeof (buf)))
- return -1;
+ {
+ if (errno == ENOTTY)
+ __set_errno (EINVAL);
+ return -1;
+ }
return __revoke (buf);
}