The
getcwd()
function copies the absolute pathname of the current working directory
to the array pointed to by
buf ,
which is of length
size .
If the current absolute path name would require a buffer longer than
size
elements,
NULL
is returned, and
errno
is set to
ERANGE ;
an application should check for this error, and allocate a larger
buffer if necessary.
As an extension to the POSIX.1 standard,
getcwd()
allocates the buffer dynamically using
malloc()
if
buf
is
NULL
on call. In this case, the allocated buffer has the length
size
unless
size
is zero, when
buf
is allocated as big as necessary. It is possible (and, indeed,
advisable) to
free()
the buffers if they have been obtained this way.
get_current_dir_name ,
which is only prototyped if
__USE_GNU
is defined, will
malloc (3)
an array big enough to hold the current directory name. If the environment
variable
PWD
is set, and its value is correct, then that value will be returned.
getwd ,
which is only prototyped if
__USE_BSD
is defined, will not
malloc (3)
any memory. The
buf
argument should be a pointer to an array at least
PATH_MAX
bytes long.
getwd
does only return the first
PATH_MAX
bytes of the actual pathname.