Index: fusl/src/unistd/getcwd.c |
diff --git a/fusl/src/unistd/getcwd.c b/fusl/src/unistd/getcwd.c |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a7b925d2dbee5a99f5ec61b77b5870ae3a839143 |
--- /dev/null |
+++ b/fusl/src/unistd/getcwd.c |
@@ -0,0 +1,19 @@ |
+#include <unistd.h> |
+#include <errno.h> |
+#include <limits.h> |
+#include <string.h> |
+#include "syscall.h" |
+ |
+char *getcwd(char *buf, size_t size) |
+{ |
+ char tmp[PATH_MAX]; |
+ if (!buf) { |
+ buf = tmp; |
+ size = PATH_MAX; |
+ } else if (!size) { |
+ errno = EINVAL; |
+ return 0; |
+ } |
+ if (syscall(SYS_getcwd, buf, size) < 0) return 0; |
+ return buf == tmp ? strdup(buf) : buf; |
+} |