GETCWD(3)

NAME
getcwd, getwd - get working directory pathname

SYNOPSIS
#include <unistd.h>

char * getcwd (char *buf, size_t size);
char * getwd (char *buf);

DESCRIPTION
The getcwd function copies the absolute pathname of the current working directory (GS/OS prefix 0 if not NULL, otherwise GS/OS prefix 8) 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 released by free(3).

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 make use of the _mapPath(3) facility.

RETURN VALUES
Upon successful completion, a pointer to the pathname is returned. Otherwise a 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.

COMPATIBILITY
These routines are thread safe.

ERRORS
The getcwd function will fail if:

    EACCESS
        Read or search permission was denied for a component of the pathname.

    EINVAL
        The size argument is zero, or if pathname mapping is active and the current working directory has a component which includes the slash ('/') character. See _mapPath(3).

    ENOENT
        A component of the pathname no longer exists.

    ENOMEM
        Insufficient memory is available.

    ERANGE
        The size argument is greater than zero but smaller than the length of the pathname plus 1.

BUGS
The getwd function does not do sufficient error checking and is not able to return very long, but valid, paths. It is provided for compatibility and should be avoided when possible.

STANDARDS
The getcwd function conforms to ANSI C. The ability to specify a NULL pointer and have getcwd allocate memory as necessary is an extension.

HISTORY
The getwd function appeared in BSD 4.0.

SEE ALSO
chdir(2), fchdir(2), _mapPath(3), malloc(3), strerror(3)