X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Funistd%2Fgetcwd.c;h=a7b925d2dbee5a99f5ec61b77b5870ae3a839143;hb=64e32287f9d8a84217834bcc3387e9431cad9e4c;hp=4910f42c2a5c3e0eae3ff6b0685ecb14e72d7e24;hpb=0b44a0315b47dd8eced9f3b7f31580cf14bbfc01;p=musl diff --git a/src/unistd/getcwd.c b/src/unistd/getcwd.c index 4910f42c..a7b925d2 100644 --- a/src/unistd/getcwd.c +++ b/src/unistd/getcwd.c @@ -1,8 +1,19 @@ #include #include +#include +#include #include "syscall.h" char *getcwd(char *buf, size_t size) { - return syscall2(__NR_getcwd, (long)buf, size) < 0 ? NULL : buf; + 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; }