1.\" Copyright (c) 1994 2.\" The Regents of the University of California. All rights reserved. 3.\" 4.\" This code is derived from software contributed to Berkeley by 5.\" Jan-Simon Pendry. 6.\" 7.\" Redistribution and use in source and binary forms, with or without 8.\" modification, are permitted provided that the following conditions 9.\" are met: 10.\" 1. Redistributions of source code must retain the above copyright 11.\" notice, this list of conditions and the following disclaimer. 12.\" 2. Redistributions in binary form must reproduce the above copyright 13.\" notice, this list of conditions and the following disclaimer in the 14.\" documentation and/or other materials provided with the distribution. 15.\" 3. Neither the name of the University nor the names of its contributors 16.\" may be used to endorse or promote products derived from this software 17.\" without specific prior written permission. 18.\" 19.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 20.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 23.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 25.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 26.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 27.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 28.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 29.\" SUCH DAMAGE. 30.\" 31.\" $OpenBSD: realpath.3,v 1.19 2014/01/20 22:40:06 schwarze Exp $ 32.\" 33.Dd $Mdocdate: January 20 2014 $ 34.Dt REALPATH 3 35.Os 36.Sh NAME 37.Nm realpath 38.Nd returns the canonicalized absolute pathname 39.Sh SYNOPSIS 40.In limits.h 41.In stdlib.h 42.Ft "char *" 43.Fn realpath "const char *pathname" "char *resolved" 44.Sh DESCRIPTION 45The 46.Fn realpath 47function resolves all symbolic links, extra 48.Dq / 49characters and references to 50.Pa /./ 51and 52.Pa /../ 53in 54.Fa pathname , 55and copies the resulting absolute pathname into the memory referenced by 56.Fa resolved . 57The 58.Fa resolved 59argument 60.Em must 61refer to a buffer capable of storing at least 62.Dv PATH_MAX 63characters, or be 64.Dv NULL . 65.Pp 66The 67.Fn realpath 68function will resolve both absolute and relative paths 69and return the absolute pathname corresponding to 70.Fa pathname . 71All but the last component of 72.Fa pathname 73must exist when 74.Fn realpath 75is called. 76.Sh RETURN VALUES 77The 78.Fn realpath 79function returns 80.Fa resolved 81on success. 82If 83.Fa resolved 84is 85.Dv NULL 86and no error occurred, then 87.Fn realpath 88returns a NUL-terminated string in a newly allocated buffer. 89If an error occurs, 90.Fn realpath 91returns 92.Dv NULL 93and the contents of 94.Fa resolved 95are undefined. 96.Sh ERRORS 97The function 98.Fn realpath 99may fail and set the external variable 100.Va errno 101for any of the errors specified for the library functions 102.Xr lstat 2 , 103.Xr readlink 2 , 104and 105.Xr getcwd 3 . 106.Sh SEE ALSO 107.Xr readlink 1 , 108.Xr getcwd 3 109.Sh STANDARDS 110The 111.Fn realpath 112function conforms to 113.St -p1003.1-2008 . 114.Sh HISTORY 115The 116.Fn realpath 117function call first appeared in 118.Bx 4.4 . 119.Sh CAVEATS 120This implementation of 121.Fn realpath 122differs slightly from the Solaris implementation. 123The 124.Bx 4.4 125version always returns absolute pathnames, 126whereas the Solaris implementation will, 127under certain circumstances, return a relative 128.Fa resolved 129when given a relative 130.Fa pathname . 131