NAME

     getcwd, get_current_dir_name, getwd -  Get  current  working
     directory


SYNOPSIS

     #include <unistd.h>

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


DESCRIPTION

     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 less than 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.


RETURN VALUE

     NULL on failure (for example, if the  current  directory  is
     not  readable),  with errno set accordingly, and buf on suc-
     cess.


CONFORMING TO

     POSIX.1


SEE ALSO

     chdir(2), free(3), malloc(3).