1.\" $OpenBSD: dirname.3,v 1.23 2019/03/08 17:33:23 benno Exp $ 2.\" 3.\" Copyright (c) 1997 Todd C. Miller <millert@openbsd.org> 4.\" 5.\" Permission to use, copy, modify, and distribute this software for any 6.\" purpose with or without fee is hereby granted, provided that the above 7.\" copyright notice and this permission notice appear in all copies. 8.\" 9.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16.\" 17.Dd $Mdocdate: March 8 2019 $ 18.Dt DIRNAME 3 19.Os 20.Sh NAME 21.Nm dirname 22.Nd extract the directory portion of a pathname 23.Sh SYNOPSIS 24.In libgen.h 25.Ft char * 26.Fn dirname "const char *path" 27.Sh DESCRIPTION 28The 29.Fn dirname 30function is the converse of 31.Xr basename 3 ; 32it returns a pointer to the parent directory of the pathname pointed to by 33.Ar path . 34Any trailing 35.Sq \&/ 36characters are not counted as part of the directory 37name. 38If 39.Ar path 40is a null pointer, the empty string, or contains no 41.Sq \&/ 42characters, 43.Fn dirname 44returns a pointer to the string 45.Qq \&. , 46signifying the current directory. 47.Sh RETURN VALUES 48On successful completion, 49.Fn dirname 50returns a pointer to the parent directory of 51.Ar path . 52.Pp 53If 54.Fn dirname 55fails, a null pointer is returned and the global variable 56.Va errno 57is set to indicate the error. 58.Sh ERRORS 59The following error codes may be set in 60.Va errno : 61.Bl -tag -width Er 62.It Bq Er ENAMETOOLONG 63The path component to be returned was larger than 64.Dv PATH_MAX . 65.El 66.Sh SEE ALSO 67.Xr basename 1 , 68.Xr dirname 1 , 69.Xr basename 3 70.Sh STANDARDS 71The 72.Fn dirname 73function conforms to the X/Open System Interfaces option of the 74.St -p1003.1-2008 75specification. 76.Sh HISTORY 77The 78.Fn dirname 79function first appeared in 80.Ox 2.2 . 81.Sh AUTHORS 82.An Todd C. Miller 83.Sh CAVEATS 84.Fn dirname 85returns a pointer to internal static storage space that will be overwritten 86by subsequent calls. 87.Pp 88Other vendor implementations of 89.Fn dirname 90may modify the contents of the string passed to 91.Fn dirname ; 92this should be taken into account when writing code which calls this function 93if portability is desired. 94