Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
REALPATH(3)		   Linux Programmer's Manual		   REALPATH(3)

NAME
       realpath	- return the canonicalized absolute pathname

SYNOPSIS
       #include	<limits.h>
       #include	<stdlib.h>

       char *realpath(const char *path,	char *resolved_path);

DESCRIPTION
       realpath	 expands  all symbolic links and resolves references to	'/./',
       '/../' and extra	'/' characters in the null terminated string named  by
       path  and  stores  the canonicalized absolute pathname in the buffer of
       size PATH_MAX named by resolved_path.  The resulting path will have  no
       symbolic	link, '/./' or '/../' components.

RETURN VALUE
       If there	is no error, it	returns	a pointer to the resolved_path.

       Otherwise  it returns a NULL pointer, and the contents of the array re-
       solved_path are undefined. The global variable errno is set to indicate
       the error.

ERRORS
       EACCES Read or search permission	was denied for a component of the path
	      prefix.

       EINVAL Either path or resolved_path is NULL. (In	libc5 this would  just
	      cause a segfault.)

       EIO    An I/O error occurred while reading from the file	system.

       ELOOP  Too  many	 symbolic  links  were	encountered in translating the
	      pathname.

       ENAMETOOLONG
	      A	component of a path name exceeded NAME_MAX characters,	or  an
	      entire path name exceeded	PATH_MAX characters.

       ENOENT The named	file does not exist.

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

BUGS
       The libc4 and libc5 implementation contains a buffer overflow (fixed in
       libc-5.4.13).  Thus, suid programs like mount need a private version.

       The length of the output	buffer should have been	an additional  parame-
       ter,  especially	 since pathconf(3) warns that the result of pathconf()
       may be huge and unsuitable for mallocing	memory.

HISTORY
       The realpath function first appeared in BSD 4.4,	contributed by Jan-Si-
       mon Pendry.  In Linux this function appears in libc 4.5.21.

CONFORMING TO
       In  BSD	4.4 and	Solaris	the limit on the pathname length is MAXPATHLEN
       (found in <sys/param.h>). The SUSv2 prescribes PATH_MAX	and  NAME_MAX,
       as  found in <limits.h> or provided by the pathconf() function. A typi-
       cal source fragment would be

	      #ifdef PATH_MAX
		path_max = PATH_MAX;
	      #else
		path_max = pathconf (path, _PC_PATH_MAX);
		if (path_max <=	0)
		  path_max = 4096;
	      #endif

       The BSD 4.4, Linux and SUSv2 versions always return  an	absolute  path
       name. Solaris may return	a relative path	name when the path argument is
       relative.  The prototype	of realpath is given in	 <unistd.h>  in	 libc4
       and libc5, but in <stdlib.h> everywhere else.

SEE ALSO
       readlink(2), getcwd(3), pathconf(3), sysconf(3)

				  1999-08-24			   REALPATH(3)

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUE | ERRORS | BUGS | HISTORY | CONFORMING TO | SEE ALSO

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=realpath&sektion=3&manpath=Red+Hat+9>

home | help