trusty (3) realpath.3posix.gz

Provided by: manpages-posix-dev_2.16-1_all bug

NAME

       realpath - resolve a pathname

SYNOPSIS

       #include <stdlib.h>

       char *realpath(const char *restrict file_name,
              char *restrict resolved_name);

DESCRIPTION

       The  realpath()  function  shall  derive, from the pathname pointed to by file_name, an absolute pathname
       that names the same file, whose resolution does not  involve  '.'  ,  '..'   ,  or  symbolic  links.  The
       generated  pathname  shall be stored as a null-terminated string, up to a maximum of {PATH_MAX} bytes, in
       the buffer pointed to by resolved_name.

       If resolved_name is a null pointer, the behavior of realpath() is implementation-defined.

RETURN VALUE

       Upon successful completion, realpath() shall return a pointer to the resolved name. Otherwise, realpath()
       shall  return  a null pointer and set errno to indicate the error, and the contents of the buffer pointed
       to by resolved_name are undefined.

ERRORS

       The realpath() function shall fail if:

       EACCES Read or search permission was denied for a component of file_name.

       EINVAL The file_name argument is a null pointer.

       EIO    An error occurred while reading from the file system.

       ELOOP  A loop exists in symbolic links encountered during resolution of the path argument.

       ENAMETOOLONG
              The length of the file_name argument exceeds {PATH_MAX} or a pathname  component  is  longer  than
              {NAME_MAX}.

       ENOENT A component of file_name does not name an existing file or file_name points to an empty string.

       ENOTDIR
              A component of the path prefix is not a directory.

       The realpath() function may fail if:

       ELOOP  More than {SYMLOOP_MAX} symbolic links were encountered during resolution of the path argument.

       ENAMETOOLONG
              Pathname  resolution  of  a  symbolic  link  produced  an intermediate result whose length exceeds
              {PATH_MAX}.

       ENOMEM Insufficient storage space is available.

       The following sections are informative.

EXAMPLES

   Generating an Absolute Pathname
       The following example generates an absolute pathname for the file identified by the symlinkpath argument.
       The generated pathname is stored in the actualpath array.

              #include <stdlib.h>
              ...
              char *symlinkpath = "/tmp/symlink/file";
              char actualpath [PATH_MAX+1];
              char *ptr;

              ptr = realpath(symlinkpath, actualpath);

APPLICATION USAGE

       None.

RATIONALE

       Since  the  maximum  pathname  length is arbitrary unless {PATH_MAX} is defined, an application generally
       cannot supply a resolved_name buffer with size {{PATH_MAX}+1}.

FUTURE DIRECTIONS

       In the future, passing a null pointer to realpath() for the resolved_name argument may be defined to have
       realpath() allocate space for the generated pathname.

SEE ALSO

       getcwd() , sysconf() , the Base Definitions volume of IEEE Std 1003.1-2001, <stdlib.h>

       Portions of this text are reprinted and reproduced in electronic form from IEEE Std 1003.1, 2003 Edition,
       Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open  Group  Base
       Specifications Issue 6, Copyright (C) 2001-2003 by the Institute of Electrical and Electronics Engineers,
       Inc and The Open Group. In the event of any discrepancy between this version and the  original  IEEE  and
       The  Open  Group  Standard,  the  original  IEEE and The Open Group Standard is the referee document. The
       original Standard can be obtained online at http://www.opengroup.org/unix/online.html .