1.\" $OpenBSD: dirname.3,v 1.17 2007/05/31 19:19:28 jmc Exp $ 2.\" 3.\" Copyright (c) 1997 Todd C. Miller <Todd.Miller@courtesan.com> 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 September 5, 2016 18.Dt DIRNAME 3 19.Os 20.Sh NAME 21.Nm dirname 22.Nd extract the directory part of a pathname 23.Sh SYNOPSIS 24.In libgen.h 25.Ft char * 26.Fn dirname "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.Fa path . 34Any trailing 35.Sq \&/ 36characters are not counted as part of the directory 37name. 38.Sh IMPLEMENTATION NOTES 39This implementation of 40.Fn dirname 41uses the buffer provided by the caller to store the resulting parent 42directory. 43Other vendor implementations may return a pointer to internal storage 44space instead. 45The advantage of the former approach is that it ensures thread-safety, 46while also placing no upper limit on the supported length of the 47pathname. 48.Sh RETURN VALUES 49If 50.Fa path 51is a null pointer, the empty string, or contains no 52.Sq \&/ 53characters, 54.Fn dirname 55returns a pointer to the string 56.Qq \&. , 57signifying the current directory. 58Otherwise, 59it returns a pointer to the parent directory of 60.Fa path . 61.Sh SEE ALSO 62.Xr basename 1 , 63.Xr dirname 1 , 64.Xr basename 3 65.Sh STANDARDS 66The 67.Fn dirname 68function conforms to 69.St -xpg4.2 . 70.Sh HISTORY 71The 72.Fn dirname 73function first appeared in 74.Ox 2.2 75and 76.Fx 4.2 . 77.Pp 78In 79.Fx 12.0 , 80this function was reimplemented to store its result in the provided 81input buffer. 82.Sh AUTHORS 83.An Nuxi, the Netherlands 84