NAME
realpath
—
returns the canonicalized absolute
pathname
LIBRARY
library “libc”
SYNOPSIS
#include
<sys/param.h>
#include <stdlib.h>
char *
realpath
(const
char * restrict pathname,
char * restrict
resolvedname);
DESCRIPTION
Therealpath
()
function resolves all symbolic links, extra “/” characters and
references to /./ and /../ in
pathname, and copies the resulting absolute pathname
into the memory referenced by resolvedname. The
resolvedname argument
must refer
to a buffer capable of storing at least MAXPATHLEN
characters, or be NULL
.
The
realpath
()
function will resolve both absolute and relative paths and return the
absolute pathname corresponding to pathname.
RETURN VALUES
If resolvedname is
NULL
, it will be allocated and the returned pointer
can be deallocated using
free(3). The realpath
() function returns
resolvedname on success. If an error occurs,
realpath
() returns NULL
, and
if resolvedname was not allocated by
realpath
(), it will contain the pathname which
caused the problem.
ERRORS
The function realpath
() may fail and set
the external variable errno for any of the errors
specified for the library functions
lstat(2),
readlink(2),
getcwd(3) and
malloc(3).
In addition, the following errors may be reported:
- [
EINVAL
] - The value of the pathname argument is
NULL
. - [
ELOOP
] - Too many symbolic links were encountered in translating the pathname.
- [
ENAMETOOLONG
] - The resulting absolute pathname exceeds
MAXPATHLEN
characters. - [
ENOENT
] - The value of the pathname argument is an empty string; or a symbolic link to an empty string is encountered.
- [
ENOTDIR
] - A component of the path prefix is not a directory.
SEE ALSO
STANDARDS
realpath
() first appeared in
X/Open Portability Guide Issue 4, Version 2
(“XPG4.2”) and is part of IEEE Std
1003.1-2001 (“POSIX.1”).
HISTORY
The realpath
() function call first
appeared in 4.4BSD. In NetBSD
7.0 the function was updated to accept a NULL
pointer for the resolvedname argument.
BUGS
This implementation of realpath
() differs
slightly from the Solaris implementation. The 4.4BSD
version always returns absolute pathnames, whereas the Solaris
implementation will, under certain circumstances, return a relative
resolvedname when given a relative
pathname.