Index: fusl/src/misc/pty.c |
diff --git a/fusl/src/misc/pty.c b/fusl/src/misc/pty.c |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b395d2c09e14f19bad0d7130de8c0a9c1cc14fd4 |
--- /dev/null |
+++ b/fusl/src/misc/pty.c |
@@ -0,0 +1,34 @@ |
+#include <stdlib.h> |
+#include <sys/ioctl.h> |
+#include <stdio.h> |
+#include <fcntl.h> |
+#include <errno.h> |
+#include "libc.h" |
+#include "syscall.h" |
+ |
+int posix_openpt(int flags) |
+{ |
+ return open("/dev/ptmx", flags); |
+} |
+ |
+int grantpt(int fd) |
+{ |
+ return 0; |
+} |
+ |
+int unlockpt(int fd) |
+{ |
+ int unlock = 0; |
+ return ioctl(fd, TIOCSPTLCK, &unlock); |
+} |
+ |
+int __ptsname_r(int fd, char *buf, size_t len) |
+{ |
+ int pty, err; |
+ if (!buf) len = 0; |
+ 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); |