Browse Source

realpath(3) doesn't use lstat(2), readlink(2), or getcwd(3) anymore,

it is a thin wrapper over the syscall __readlink(2).  Improve the list
of possible errors.
ok millert beck jmc
OPENBSD_6_6
deraadt 5 years ago
parent
commit
04e8452164
1 changed files with 39 additions and 21 deletions
  1. +39
    -21
      src/lib/libc/stdlib/realpath.3

+ 39
- 21
src/lib/libc/stdlib/realpath.3 View File

@ -28,9 +28,9 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE. .\" SUCH DAMAGE.
.\" .\"
.\" $OpenBSD: realpath.3,v 1.19 2014/01/20 22:40:06 schwarze Exp $
.\" $OpenBSD: realpath.3,v 1.20 2019/06/15 15:40:44 deraadt Exp $
.\" .\"
.Dd $Mdocdate: January 20 2014 $
.Dd $Mdocdate: June 15 2019 $
.Dt REALPATH 3 .Dt REALPATH 3
.Os .Os
.Sh NAME .Sh NAME
@ -96,13 +96,43 @@ are undefined.
.Sh ERRORS .Sh ERRORS
The function The function
.Fn realpath .Fn realpath
may fail and set the external variable
.Va errno
for any of the errors specified for the library functions
.Xr lstat 2 ,
.Xr readlink 2 ,
and
.Xr getcwd 3 .
will fail if:
.Bl -tag -width Er
.It Bq Er EACCES
Read or search permission was denied for a component of
.Ar pathname .
.It Bq Er EINVAL
The
.Ar pathname
argument is a null pointer.
.It Bq Er EIO
An error occurred while reading from the file system.
.It Bq Er ELOOP
Too many symbolic links were encountered in translating
.Ar pathname .
.It Bq Er ENAMETOOLONG
A component of
.Ar pathname
exceeded
.Dv NAME_MAX
characters, or the entire
.Ar pathname
(including the terminating NUL) exceeded
.Dv PATH_MAX .
.It Bq Er ENAMETOOLONG
Pathname resolution of a symbolic link produced an intermediate
result whose length exceeds
.Dv PATH_MAX .
.It Bq Er ENOENT
A component of
.Ar pathname
does not name an existing file or
.Ar pathname
points to an empty string.
.It Bq Er ENOTDIR
A component of the path prefix is not a directory.
.It Bq Er ENOMEM
Sufficient storage space is unavailable for allocation.
.Sh SEE ALSO .Sh SEE ALSO
.Xr readlink 1 , .Xr readlink 1 ,
.Xr getcwd 3 .Xr getcwd 3
@ -116,15 +146,3 @@ The
.Fn realpath .Fn realpath
function call first appeared in function call first appeared in
.Bx 4.4 . .Bx 4.4 .
.Sh CAVEATS
This implementation of
.Fn realpath
differs slightly from the Solaris implementation.
The
.Bx 4.4
version always returns absolute pathnames,
whereas the Solaris implementation will,
under certain circumstances, return a relative
.Fa resolved
when given a relative
.Fa pathname .

Loading…
Cancel
Save