[hurd,commited] bsd unlockpt: unlockpt needs to fail with EINVAL, not ENOTTY

Message ID 20201108141119.2226854-1-samuel.thibault@ens-lyon.org
State Committed, archived
Headers
Series [hurd,commited] bsd unlockpt: unlockpt needs to fail with EINVAL, not ENOTTY |

Commit Message

Samuel Thibault Nov. 8, 2020, 2:11 p.m. UTC
  The EINVAL error code is mandated by POSIX, while ptsname_r returns
ENOTTY, so we need to translate.
---
 sysdeps/unix/bsd/unlockpt.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
  

Patch

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);
 }