NAME
__realpath
—
resolves the canonicalized absolute
pathname
LIBRARY
library “libc”
SYNOPSIS
int
__realpath
(const
char * restrict pathname,
char * restrict
resolved_path, size_t
len);
DESCRIPTION
The__realpath
()
system call is used to support the libc
realpath
()
library call. It basically does the same thing but with a lower-level
system-call compatible API. The system call differs from the libc function as
follows: It requires that the target buffer and the size of the target buffer
be supplied, it does not (obviously) allocate a target buffer if NULL is
supplied, and it returns the string length of the target buffer (not including
the terminator) or -1. If a failure occurs, the target buffer will not be
modified (whereas it is in the libc function).
The system call resolves all symbolic links, extra
“/” characters and references to /./
and /../ in pathname, and
copies the resulting absolute pathname into the memory pointed to by
resolved_path. The resolved_path
argument must point
to a buffer capable of storing at least len
characters, and may not be NULL
.
The
__realpath
()
function will resolve both absolute and relative paths and return the
absolute pathname corresponding to pathname. All
components of pathname must exist when
__realpath
() is called, and all but the last
component must name either directories or symlinks pointing to the
directories.
RETURN VALUES
The realpath
() function returns the string
length of the path stored in the target buffer, not including the
terminator, or -1 on failure.
ERRORS
The function may fail and set the external variable errno for any of the errors specified for the library function realpath(3).
SEE ALSO
HISTORY
The __realpath
() function first appeared
in DragonFly 5.7.
CAVEATS
This is the system call version of the libc
realpath
() function, but is not a replacement for
the libc function due to necessary API differences.