/* Emulate getcwd using getwd. This function is in the public domain. */ /* NAME getcwd -- get absolute pathname for current working directory SYNOPSIS char *getcwd (char pathname[len], len) DESCRIPTION Copy the absolute pathname for the current working directory into the supplied buffer and return a pointer to the buffer. If the current directory's path doesn't fit in LEN characters, the result is NULL and errno is set. If pathname is a null pointer, getcwd() will obtain size bytes of space using malloc. BUGS Emulated via the getwd() call, which is reasonable for most systems that do not have getcwd(). */ #include "config.h" #ifdef HAVE_SYS_PARAM_H #include <sys/param.h> #endif #include <errno.h> #ifdef HAVE_STRING_H #include <string.h> #endif #ifdef HAVE_STDLIB_H #include <stdlib.h> #endif extern char *getwd (); extern int errno; #ifndef MAXPATHLEN #define MAXPATHLEN 1024 #endif char * getcwd (buf, len) char *buf; int len; { char ourbuf[MAXPATHLEN]; char *result; result = getwd (ourbuf); if (result) { if (strlen (ourbuf) >= len) { errno = ERANGE; return 0; } if (!buf) { buf = (char*)malloc(len); if (!buf) { errno = ENOMEM; return 0; } } strcpy (buf, ourbuf); } return buf; }