X-Git-Url: https://git.saurik.com/apple/libc.git/blobdiff_plain/1f2f436a38f7ae2d39a943ad2898d8fed4ed2e58..2650fa9ee9806a25904566dea091b1225d74f063:/stdlib/FreeBSD/realpath.3 diff --git a/stdlib/FreeBSD/realpath.3 b/stdlib/FreeBSD/realpath.3 index dc6ba9a..bce1dae 100644 --- a/stdlib/FreeBSD/realpath.3 +++ b/stdlib/FreeBSD/realpath.3 @@ -31,88 +31,128 @@ .\" @(#)realpath.3 8.2 (Berkeley) 2/16/94 .\" $FreeBSD: src/lib/libc/stdlib/realpath.3,v 1.14 2007/01/09 00:28:10 imp 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 sys/param.h .In stdlib.h .Ft "char *" -.Fn realpath "const char *pathname" "char resolved_path[PATH_MAX]" +.Fo realpath +.Fa "const char *restrict file_name" +.Fa "char *restrict resolved_name" +.Fc .Sh DESCRIPTION The .Fn realpath function resolves all symbolic links, extra .Dq / -characters and references to +characters, and references to .Pa /./ and .Pa /../ in -.Fa pathname , -and copies the resulting absolute pathname into -the memory referenced by -.Fa resolved_path . -The -.Fa resolved_path +.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 function will resolve both absolute and relative paths and return the absolute pathname corresponding to -.Fa pathname . -All but the last component of -.Fa pathname +.Fa file_name . +All components of +.Fa file_name must exist when .Fn realpath is called. .Sh "RETURN VALUES" -The +On success, the .Fn realpath -function returns -.Fa resolved_path -on success. +function returns the address of the resulting absolute pathname, which is +.Fa resolved_name +if it was non-NULL, or the address of newly allocated memory. If an error occurs, .Fn realpath returns -.Dv NULL , -and -.Fa resolved_path +.Dv NULL . +If +.Fa resolved_name +was non-NULL, it will contains the pathname which caused the problem. +.Sh VARIANTS +Defining +.Dv _DARWIN_C_SOURCE +or +.Dv _DARWIN_BETTER_REALPATH +before including stdio.h will cause the provided implementation of +.Fn realpath +to use F_GETPATH from +.Xr fcntl 2 +to discover the path. .Sh ERRORS The function .Fn realpath 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 readlink 2 , +.Xr stat 2 , and -.Xr getcwd 3 . -.Sh CAVEATS -This implementation of +.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 +.Fd #include +.Pp +The include file +.In sys/param.h +is necessary. +.Sh LEGACY DESCRIPTION +In legacy mode, +the last component of +.Fa file_name +does not need to exist when .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_path -when given a relative -.Fa pathname . +is called. .Sh "SEE ALSO" -.Xr getcwd 3 +.Xr free 3 , +.Xr getcwd 3 , +.Xr compat 5 .Sh HISTORY The .Fn realpath