rework langinfo code for ABI compat and for use by time code
[musl] / src / misc / pty.c
index 6ca33e3..9e201ef 100644 (file)
@@ -2,7 +2,9 @@
 #include <sys/ioctl.h>
 #include <stdio.h>
 #include <fcntl.h>
+#include <errno.h>
 #include "libc.h"
+#include "syscall.h"
 
 int posix_openpt(int flags)
 {
@@ -22,10 +24,11 @@ int unlockpt(int fd)
 
 int __ptsname_r(int fd, char *buf, size_t len)
 {
-       int pty;
+       int pty, err;
        if (!buf) len = 0;
-       return -( ioctl (fd, TIOCGPTN, &pty) < 0
-               || snprintf(buf, len, "/dev/pts/%d", pty) >= len );
+       if ((err = __syscall(SYS_ioctl, fd, TIOCGPTN, &pty))) return err;
+       if (snprintf(buf, len, "/dev/pts/%d", pty) >= len) return ERANGE;
+       return 0;
 }
 
 weak_alias(__ptsname_r, ptsname_r);