1#include <unistd.h> 2#include <errno.h> 3#include <limits.h> 4#include <string.h> 5#include "syscall.h" 6 7char *getcwd(char *buf, size_t size) 8{ 9 char tmp[PATH_MAX]; 10 if (!buf) { 11 buf = tmp; 12 size = PATH_MAX; 13 } else if (!size) { 14 errno = EINVAL; 15 return 0; 16 } 17 if (syscall(SYS_getcwd, buf, size) < 0) return 0; 18 return buf == tmp ? strdup(buf) : buf; 19} 20