Loading...
--- Libc/Libc-498/stdlib/realpath.3
+++ Libc/Libc-594.9.1/stdlib/realpath.3
@@ -35,14 +35,14 @@
.\" @(#)realpath.3 8.2 (Berkeley) 2/16/94
.\" $FreeBSD: src/lib/libc/stdlib/realpath.3,v 1.13 2003/03/27 20:48:53 fjoe Exp $
.\"
-.Dd February 16, 1994
+.Dd April 5, 2008
.Dt REALPATH 3
.Os
.Sh NAME
.Nm realpath
.Nd returns the canonicalized absolute pathname
-.Sh LIBRARY
-.Lb libc
+.\" .Sh LIBRARY
+.\" .Lb libc
.Sh SYNOPSIS
.In stdlib.h
.Ft "char *"
@@ -60,17 +60,24 @@
and
.Pa /../
in
-.Fa file_name ,
-and copies the resulting absolute pathname into
-the memory referenced by
-.Fa resolved_name .
-The
+.Fa file_name .
+If the
.Fa resolved_name
argument
+is non-NULL, the resulting absolute pathname is copied there (it
.Em must
refer to a buffer capable of storing at least
.Dv PATH_MAX
-characters.
+characters).
+.Pp
+As a permitted extension to the standard, if
+.Fa resolved_name
+is NULL,
+memory is allocated for the resulting absolute pathname, and is returned by
+.Fn realpath .
+This memory should be freed by a call to
+.Xr free 3
+when no longer needed.
.Pp
The
.Fn realpath
@@ -83,17 +90,18 @@
.Fn realpath
is called.
.Sh "RETURN VALUES"
-The
+On success, the
.Fn realpath
-function returns
+function returns the address of the resulting absolute pathname, which is
.Fa resolved_name
-on success.
+if it was non-NULL, or the address of newly allocated memory.
If an error occurs,
.Fn realpath
returns
-.Dv NULL
-and
+.Dv NULL .
+If
.Fa resolved_name
+was non-NULL, it will
contains the pathname which caused the problem.
.Sh ERRORS
The function
@@ -101,22 +109,26 @@
may fail and set the external variable
.Va errno
for any of the errors specified for the library functions
+.Xr alloca 3 ,
+.Xr getattrlist 2 ,
+.Xr getcwd 3 ,
.Xr lstat 2 ,
.Xr readlink 2 ,
+.Xr stat 2 ,
and
-.Xr getcwd 3 .
-.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_name
-when given a relative
-.Fa file_name .
+.Xr strdup 3 .
+.\" .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_name
+.\" when given a relative
+.\" .Fa file_name .
.Sh LEGACY SYNOPSIS
.Fd #include <sys/param.h>
.Fd #include <stdlib.h>
@@ -132,6 +144,7 @@
.Fn realpath
is called.
.Sh "SEE ALSO"
+.Xr free 3 ,
.Xr getcwd 3 ,
.Xr compat 5
.Sh HISTORY