1251875Speter/* Emulate getcwd using getwd. 2251875Speter This function is in the public domain. */ 3251875Speter 4251875Speter/* 5251875Speter 6251875Speter@deftypefn Supplemental char* getcwd (char *@var{pathname}, int @var{len}) 7251875Speter 8251875SpeterCopy the absolute pathname for the current working directory into 9251875Speter@var{pathname}, which is assumed to point to a buffer of at least 10251875Speter@var{len} bytes, and return a pointer to the buffer. If the current 11251875Speterdirectory's path doesn't fit in @var{len} characters, the result is 12251875Speter@code{NULL} and @code{errno} is set. If @var{pathname} is a null pointer, 13251875Speter@code{getcwd} will obtain @var{len} bytes of space using 14251875Speter@code{malloc}. 15251875Speter 16251875Speter@end deftypefn 17251875Speter 18251875Speter*/ 19251875Speter 20251875Speter#include "config.h" 21251875Speter 22251875Speter#ifdef HAVE_SYS_PARAM_H 23251875Speter#include <sys/param.h> 24251875Speter#endif 25251875Speter#include <errno.h> 26251875Speter#ifdef HAVE_STRING_H 27251875Speter#include <string.h> 28251875Speter#endif 29251875Speter#ifdef HAVE_STDLIB_H 30251875Speter#include <stdlib.h> 31251875Speter#endif 32251875Speter 33251875Speterextern char *getwd (); 34251875Speterextern int errno; 35251875Speter 36251875Speter#ifndef MAXPATHLEN 37251875Speter#define MAXPATHLEN 1024 38251875Speter#endif 39251875Speter 40251875Speterchar * 41251875Spetergetcwd (char *buf, size_t len) 42251875Speter{ 43251875Speter char ourbuf[MAXPATHLEN]; 44251875Speter char *result; 45251875Speter 46251875Speter result = getwd (ourbuf); 47251875Speter if (result) { 48251875Speter if (strlen (ourbuf) >= len) { 49251875Speter errno = ERANGE; 50251875Speter return 0; 51251875Speter } 52251875Speter if (!buf) { 53251875Speter buf = (char*)malloc(len); 54251875Speter if (!buf) { 55251875Speter errno = ENOMEM; 56251875Speter return 0; 57251875Speter } 58251875Speter } 59251875Speter strcpy (buf, ourbuf); 60251875Speter } 61251875Speter return buf; 62251875Speter} 63251875Speter