char *
getcwd(char *buf, size_t size)
char *
getwd(char *buf)
)
function copies the absolute pathname of the current working directory
into the memory referenced by
buf
and returns a pointer to
buf.
The
size
argument is the size, in bytes, of the array referenced by
buf.
If
buf
is
NULL,
space is allocated as necessary to store the pathname.
This space may later be
free(3)'d.
The function
getwd()
is a compatibility routine which calls
getcwd()
with its
buf
argument and a size of
MAXPATHLEN
(as defined in the include
file
<sys/param.h>).
Obviously,
buf
should be at least
MAXPATHLEN
bytes in length.
These routines have traditionally been used by programs to save the name of a working directory for the purpose of returning to it. A much faster and less error-prone method of accomplishing this is to open the current directory (`.') and use the fchdir(2) function to return.
NULL
pointer is returned and the global variable
errno
is set to indicate the error.
In addition,
getwd()
copies the error message associated with
errno
into the memory referenced by
buf.
)
function
will fail if:
EACCES]EINVAL]size
argument is zero.
ENOENT]ENOMEM]ERANGE]size
argument is greater than zero but smaller than the length of the pathname
plus 1.
)
function
conforms to
ISO/IEC 9945-1:1990 (``POSIX.1'') .
The ability to specify a
NULL
pointer and have
getcwd()
allocate memory as necessary is an extension.
)
function appeared in
4.0BSD.
)
does not know the length of the supplied buffer, it is possible
for a long (but valid) path to overflow the buffer and provide
a means for an attacker to exploit the caller.
getcwd()
should be used in place of
getwd()
(the latter is only provided for compatibility purposes).