/* Quick hack to get posix.getcwd() working for pure BSD 4.3 */ #include "sys/param.h" #include "errno.h" extern int errno; extern char *getwd(); char * getcwd(buf, size) char *buf; int size; { char localbuf[MAXPATHLEN+1]; char *ret; if (size <= 0) { errno = EINVAL; return NULL; } ret = getwd(localbuf); if (ret != NULL && strlen(localbuf) >= size) { errno = ERANGE; return NULL; } if (ret == NULL) { errno = EACCES; /* Most likely error */ return NULL; } strncpy(buf, localbuf, size); return buf; } /* PS: for really old systems you must popen /bin/pwd ... */