xref: /freebsd/lib/libc/gen/dirname.3 (revision e2f68161004f312bf10e4b683ac866b45f6e8489)
17b1fac00SXin LI.\" $OpenBSD: dirname.3,v 1.17 2007/05/31 19:19:28 jmc Exp $
21250db81SDag-Erling Smørgrav.\"
31250db81SDag-Erling Smørgrav.\" Copyright (c) 1997 Todd C. Miller <Todd.Miller@courtesan.com>
41250db81SDag-Erling Smørgrav.\"
57b1fac00SXin LI.\" Permission to use, copy, modify, and distribute this software for any
67b1fac00SXin LI.\" purpose with or without fee is hereby granted, provided that the above
77b1fac00SXin LI.\" copyright notice and this permission notice appear in all copies.
81250db81SDag-Erling Smørgrav.\"
97b1fac00SXin LI.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
107b1fac00SXin LI.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
117b1fac00SXin LI.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
127b1fac00SXin LI.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
137b1fac00SXin LI.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
147b1fac00SXin LI.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
157b1fac00SXin LI.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
161250db81SDag-Erling Smørgrav.\"
171250db81SDag-Erling Smørgrav.\" $FreeBSD$
181250db81SDag-Erling Smørgrav.\"
19*e2f68161SEd Schouten.Dd August 12, 2016
201250db81SDag-Erling Smørgrav.Dt DIRNAME 3
211250db81SDag-Erling Smørgrav.Os
221250db81SDag-Erling Smørgrav.Sh NAME
231250db81SDag-Erling Smørgrav.Nm dirname
2457bd0fc6SJens Schweikhardt.Nd extract the directory part of a pathname
251250db81SDag-Erling Smørgrav.Sh SYNOPSIS
2632eef9aeSRuslan Ermilov.In libgen.h
271250db81SDag-Erling Smørgrav.Ft char *
28938809f9SEd Schouten.Fn dirname "char *path"
291250db81SDag-Erling Smørgrav.Sh DESCRIPTION
301250db81SDag-Erling SmørgravThe
311250db81SDag-Erling Smørgrav.Fn dirname
327b1fac00SXin LIfunction is the converse of
331250db81SDag-Erling Smørgrav.Xr basename 3 ;
341250db81SDag-Erling Smørgravit returns a pointer to the parent directory of the pathname pointed to by
355c564baeSRuslan Ermilov.Fa path .
361250db81SDag-Erling SmørgravAny trailing
371250db81SDag-Erling Smørgrav.Sq \&/
381250db81SDag-Erling Smørgravcharacters are not counted as part of the directory
391250db81SDag-Erling Smørgravname.
40*e2f68161SEd Schouten.Sh RETURN VALUES
411250db81SDag-Erling SmørgravIf
425c564baeSRuslan Ermilov.Fa path
431250db81SDag-Erling Smørgravis a null pointer, the empty string, or contains no
441250db81SDag-Erling Smørgrav.Sq \&/
451250db81SDag-Erling Smørgravcharacters,
461250db81SDag-Erling Smørgrav.Fn dirname
471250db81SDag-Erling Smørgravreturns a pointer to the string
481250db81SDag-Erling Smørgrav.Qq \&. ,
491250db81SDag-Erling Smørgravsignifying the current directory.
50*e2f68161SEd SchoutenOtherwise,
51*e2f68161SEd Schoutenit returns a pointer to the parent directory of
525c564baeSRuslan Ermilov.Fa path .
53*e2f68161SEd Schouten.Sh IMPLEMENTATION NOTES
54*e2f68161SEd SchoutenThis implementation of
551250db81SDag-Erling Smørgrav.Fn dirname
56*e2f68161SEd Schoutenuses the buffer provided by the caller to store the resulting parent
57*e2f68161SEd Schoutendirectory.
58*e2f68161SEd SchoutenOther vendor implementations may return a pointer to internal storage
59*e2f68161SEd Schoutenspace instead.
60*e2f68161SEd SchoutenThe advantage of the former approach is that it ensures thread-safety,
61*e2f68161SEd Schoutenwhile also placing no upper limit on the supported length of the
62*e2f68161SEd Schoutenpathname.
63*e2f68161SEd Schouten.Pp
64*e2f68161SEd SchoutenThe algorithm used by this implementation also discards redundant
65*e2f68161SEd Schoutenslashes and
66*e2f68161SEd Schouten.Qq \&.
67*e2f68161SEd Schoutenpathname components from the pathname string.
681250db81SDag-Erling Smørgrav.Sh SEE ALSO
691250db81SDag-Erling Smørgrav.Xr basename 1 ,
701250db81SDag-Erling Smørgrav.Xr dirname 1 ,
711250db81SDag-Erling Smørgrav.Xr basename 3
721250db81SDag-Erling Smørgrav.Sh STANDARDS
731250db81SDag-Erling SmørgravThe
741250db81SDag-Erling Smørgrav.Fn dirname
751250db81SDag-Erling Smørgravfunction conforms to
761250db81SDag-Erling Smørgrav.St -xpg4.2 .
771250db81SDag-Erling Smørgrav.Sh HISTORY
781250db81SDag-Erling SmørgravThe
791250db81SDag-Erling Smørgrav.Fn dirname
801250db81SDag-Erling Smørgravfunction first appeared in
818dfd7bcdSDavid E. O'Brien.Ox 2.2
828dfd7bcdSDavid E. O'Brienand
838dfd7bcdSDavid E. O'Brien.Fx 4.2 .
84*e2f68161SEd Schouten.Pp
85*e2f68161SEd SchoutenIn
86*e2f68161SEd Schouten.Fx 12.0 ,
87*e2f68161SEd Schoutenthis function was reimplemented to store its result in the provided
88*e2f68161SEd Schouteninput buffer.
89251c176fSRuslan Ermilov.Sh AUTHORS
90*e2f68161SEd Schouten.An Nuxi, the Netherlands
91