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).