1#include <stdlib.h> 2#include <sys/ioctl.h> 3#include <stdio.h> 4#include <fcntl.h> 5#include <errno.h> 6#include "libc.h" 7#include "syscall.h" 8 9int posix_openpt(int flags) 10{ 11 return open("/dev/ptmx", flags); 12} 13 14int grantpt(int fd) 15{ 16 return 0; 17} 18 19int unlockpt(int fd) 20{ 21 int unlock = 0; 22 return ioctl(fd, TIOCSPTLCK, &unlock); 23} 24 25int __ptsname_r(int fd, char *buf, size_t len) 26{ 27 int pty, err; 28 if (!buf) len = 0; 29 if ((err = __syscall(SYS_ioctl, fd, TIOCGPTN, &pty))) return -err; 30 if (snprintf(buf, len, "/dev/pts/%d", pty) >= len) return ERANGE; 31 return 0; 32} 33 34weak_alias(__ptsname_r, ptsname_r); 35