Index: fusl/src/unistd/fchdir.c |
diff --git a/fusl/src/unistd/fchdir.c b/fusl/src/unistd/fchdir.c |
new file mode 100644 |
index 0000000000000000000000000000000000000000..72c3915eee095964e0f161183ccfcff28862a47a |
--- /dev/null |
+++ b/fusl/src/unistd/fchdir.c |
@@ -0,0 +1,17 @@ |
+#include <unistd.h> |
+#include <errno.h> |
+#include <fcntl.h> |
+#include "syscall.h" |
+ |
+void __procfdname(char *, unsigned); |
+ |
+int fchdir(int fd) |
+{ |
+ int ret = __syscall(SYS_fchdir, fd); |
+ if (ret != -EBADF || __syscall(SYS_fcntl, fd, F_GETFD) < 0) |
+ return __syscall_ret(ret); |
+ |
+ char buf[15+3*sizeof(int)]; |
+ __procfdname(buf, fd); |
+ return syscall(SYS_chdir, buf); |
+} |