+The
+.I getcwd
+function copies the absolute pathname of the current working directory
+into the memory referenced by
+.I buf
+and returns a pointer to
+.IR buf .
+The
+.I size
+argument is the size, in bytes, of the array referenced by
+.IR buf .
+.PP
+If
+.I buf
+is NULL, space is allocated as necessary to store the pathname.
+This space may later be
+.IR free 'd.
+.PP
+The function
+.I getwd
+is a compatibility routine which calls
+.I getcwd
+with its
+.I buf
+argument and a size of MAXPATHLEN (as defined in the include
+file <sys/param.h>).
+Obviously,
+.I buf
+should be at least MAXPATHLEN bytes in length.
+.PP
+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
+.IR fchdir (2)
+function to return.
+.SH RETURN VALUES
+Upon successful completion, a pointer to the pathname is returned.
+Otherwise a NULL pointer is returned and
+.I errno
+is set to indicate the error.
+In addition,
+.I getwd
+copies the error message associated with
+.I errno
+into the memory referenced by
+.IR buf .
+.SH ERRORS
+.I Getcwd
+will fail if:
+.TP 15
+[EACCESS]
+Read or search permission was denied for a component of the pathname.
+.TP 15
+[EINVAL]
+The
+.I size
+argument is zero.
+.TP 15
+[ENOENT]
+A component of the pathname no longer exists.
+.TP 15
+[ENOMEM]
+Insufficient memory is available.
+.TP 15
+[ERANGE]
+The
+.I size
+argument is greater than zero but smaller than the length of the pathname
+plus 1.
+.SH BUGS