diff options
Diffstat (limited to 'sysdeps/unix/sysv')
-rw-r--r-- | sysdeps/unix/sysv/linux/unlockpt.c | 21 |
1 files changed, 5 insertions, 16 deletions
diff --git a/sysdeps/unix/sysv/linux/unlockpt.c b/sysdeps/unix/sysv/linux/unlockpt.c index 3a0ac7a96c..4d98abece0 100644 --- a/sysdeps/unix/sysv/linux/unlockpt.c +++ b/sysdeps/unix/sysv/linux/unlockpt.c @@ -27,22 +27,11 @@ int unlockpt (int fd) { -#ifdef TIOCSPTLCK - int save_errno = errno; int unlock = 0; - if (__ioctl (fd, TIOCSPTLCK, &unlock)) - { - if (errno == EINVAL) - { - __set_errno (save_errno); - return 0; - } - else - return -1; - } -#endif - /* If we have no TIOCSPTLCK ioctl, all slave pseudo terminals are - unlocked by default. */ - return 0; + int ret = __ioctl (fd, TIOCSPTLCK, &unlock); + if (ret != 0 && errno == ENOTTY) + /* POSIX mandates EINVAL for non-ptmx descriptors. */ + __set_errno (EINVAL); + return ret; } |