FreeBSD Manual Pages
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>