36 lines
594 B
C
36 lines
594 B
C
|
/* 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 ... */
|