diff options
Diffstat (limited to 'man3p/realpath.3p')
-rw-r--r-- | man3p/realpath.3p | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/man3p/realpath.3p b/man3p/realpath.3p new file mode 100644 index 000000000..a7d243bcc --- /dev/null +++ b/man3p/realpath.3p @@ -0,0 +1,126 @@ +.\" Copyright (c) 2001-2003 The Open Group, All Rights Reserved +.TH "REALPATH" P 2003 "IEEE/The Open Group" "POSIX Programmer's Manual" +.\" realpath +.SH NAME +realpath \- resolve a pathname +.SH SYNOPSIS +.LP +\fB#include <stdlib.h> +.br +.sp +char *realpath(const char *restrict\fP \fIfile_name\fP\fB, +.br +\ \ \ \ \ \ char *restrict\fP \fIresolved_name\fP\fB); \fP +\fB +.br +\fP +.SH DESCRIPTION +.LP +The \fIrealpath\fP() function shall derive, from the pathname pointed +to by \fIfile_name\fP, an absolute pathname that names +the same file, whose resolution does not involve \fB'.'\fP , \fB'..'\fP +, 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 \fIresolved_name\fP. +.LP +If \fIresolved_name\fP is a null pointer, the behavior of \fIrealpath\fP() +is implementation-defined. +.SH RETURN VALUE +.LP +Upon successful completion, \fIrealpath\fP() shall return a pointer +to the resolved name. Otherwise, \fIrealpath\fP() shall +return a null pointer and set \fIerrno\fP to indicate the error, and +the contents of the buffer pointed to by \fIresolved_name\fP +are undefined. +.SH ERRORS +.LP +The \fIrealpath\fP() function shall fail if: +.TP 7 +.B EACCES +Read or search permission was denied for a component of \fIfile_name\fP. +.TP 7 +.B EINVAL +The \fIfile_name\fP argument is a null pointer. +.TP 7 +.B EIO +An error occurred while reading from the file system. +.TP 7 +.B ELOOP +A loop exists in symbolic links encountered during resolution of the +\fIpath\fP argument. +.TP 7 +.B ENAMETOOLONG +The length of the \fIfile_name\fP argument exceeds {PATH_MAX} or a +pathname component is longer than {NAME_MAX}. +.TP 7 +.B ENOENT +A component of \fIfile_name\fP does not name an existing file or \fIfile_name\fP +points to an empty string. +.TP 7 +.B ENOTDIR +A component of the path prefix is not a directory. +.sp +.LP +The \fIrealpath\fP() function may fail if: +.TP 7 +.B ELOOP +More than {SYMLOOP_MAX} symbolic links were encountered during resolution +of the \fIpath\fP argument. +.TP 7 +.B ENAMETOOLONG +Pathname resolution of a symbolic link produced an intermediate result +whose length exceeds {PATH_MAX}. +.TP 7 +.B ENOMEM +Insufficient storage space is available. +.sp +.LP +\fIThe following sections are informative.\fP +.SH EXAMPLES +.SS Generating an Absolute Pathname +.LP +The following example generates an absolute pathname for the file +identified by the \fIsymlinkpath\fP argument. The generated +pathname is stored in the \fIactualpath\fP array. +.sp +.RS +.nf + +\fB#include <stdlib.h> +\&... +char *symlinkpath = "/tmp/symlink/file"; +char actualpath [PATH_MAX+1]; +char *ptr; +.sp + +ptr = realpath(symlinkpath, actualpath); +\fP +.fi +.RE +.SH APPLICATION USAGE +.LP +None. +.SH RATIONALE +.LP +Since the maximum pathname length is arbitrary unless {PATH_MAX} is +defined, an application generally cannot supply a +\fIresolved_name\fP buffer with size {{PATH_MAX}+1}. +.SH FUTURE DIRECTIONS +.LP +In the future, passing a null pointer to \fIrealpath\fP() for the +\fIresolved_name\fP argument may be defined to have +\fIrealpath\fP() allocate space for the generated pathname. +.SH SEE ALSO +.LP +\fIgetcwd\fP() , \fIsysconf\fP() , the Base Definitions volume of +IEEE\ Std\ 1003.1-2001, \fI<stdlib.h>\fP +.SH COPYRIGHT +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 . |