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.
This commit is contained in:
Samuel Thibault 2020-11-08 14:06:56 +00:00
parent aa11ab9953
commit dfe2e7a562

View File

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