2011-06-18 00:33:34 +00:00
|
|
|
.\" $OpenBSD: basename.3,v 1.20 2007/05/31 19:19:28 jmc Exp $
|
2000-08-31 15:56:15 +00:00
|
|
|
.\"
|
|
|
|
.\" Copyright (c) 1997 Todd C. Miller <Todd.Miller@courtesan.com>
|
|
|
|
.\"
|
2011-06-18 00:33:34 +00:00
|
|
|
.\" Permission to use, copy, modify, and distribute this software for any
|
|
|
|
.\" purpose with or without fee is hereby granted, provided that the above
|
|
|
|
.\" copyright notice and this permission notice appear in all copies.
|
2000-08-31 15:56:15 +00:00
|
|
|
.\"
|
2011-06-18 00:33:34 +00:00
|
|
|
.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
|
|
.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
|
|
.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
|
|
.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
|
|
.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
|
|
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
|
|
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
2000-08-31 15:56:15 +00:00
|
|
|
.\"
|
|
|
|
.\" $FreeBSD$
|
|
|
|
.\"
|
2016-07-29 16:25:09 +00:00
|
|
|
.Dd July 29, 2016
|
2000-08-31 15:56:15 +00:00
|
|
|
.Dt BASENAME 3
|
|
|
|
.Os
|
|
|
|
.Sh NAME
|
|
|
|
.Nm basename
|
|
|
|
.Nd extract the base portion of a pathname
|
|
|
|
.Sh SYNOPSIS
|
2001-10-01 16:09:29 +00:00
|
|
|
.In libgen.h
|
2000-08-31 15:56:15 +00:00
|
|
|
.Ft char *
|
2016-07-28 16:20:27 +00:00
|
|
|
.Fn basename "char *path"
|
2009-10-06 14:05:57 +00:00
|
|
|
.Ft char *
|
|
|
|
.Fn basename_r "const char *path" "char *bname"
|
2000-08-31 15:56:15 +00:00
|
|
|
.Sh DESCRIPTION
|
|
|
|
The
|
|
|
|
.Fn basename
|
2011-06-18 00:33:34 +00:00
|
|
|
function returns the last component from the pathname pointed to by
|
2002-12-18 13:33:04 +00:00
|
|
|
.Fa path ,
|
2000-08-31 15:56:15 +00:00
|
|
|
deleting any trailing
|
|
|
|
.Sq \&/
|
|
|
|
characters.
|
|
|
|
If
|
2002-12-18 13:33:04 +00:00
|
|
|
.Fa path
|
2000-08-31 15:56:15 +00:00
|
|
|
consists entirely of
|
|
|
|
.Sq \&/
|
|
|
|
characters, a pointer to the string
|
|
|
|
.Qq \&/
|
|
|
|
is returned.
|
|
|
|
If
|
2002-12-18 13:33:04 +00:00
|
|
|
.Fa path
|
2000-08-31 15:56:15 +00:00
|
|
|
is a null pointer or the empty string, a pointer to the string
|
|
|
|
.Qq \&.
|
|
|
|
is returned.
|
2009-10-06 14:05:57 +00:00
|
|
|
.Pp
|
|
|
|
The
|
|
|
|
.Fn basename_r
|
|
|
|
variation accepts a buffer of at least
|
|
|
|
.Dv MAXPATHLEN
|
|
|
|
bytes in which to store the resulting component.
|
2006-10-12 14:31:17 +00:00
|
|
|
.Sh IMPLEMENTATION NOTES
|
|
|
|
The
|
|
|
|
.Fn basename
|
|
|
|
function
|
|
|
|
returns a pointer to internal storage space allocated on the first call
|
|
|
|
that will be overwritten
|
|
|
|
by subsequent calls.
|
2016-07-29 16:25:09 +00:00
|
|
|
.Pp
|
|
|
|
Other vendor implementations of
|
|
|
|
.Fn basename
|
|
|
|
may store their result in the input buffer,
|
|
|
|
making it safe to use in multithreaded applications.
|
|
|
|
Future versions of
|
|
|
|
.Fx
|
|
|
|
will follow this approach as well.
|
2009-10-06 14:05:57 +00:00
|
|
|
.Fn basename_r
|
2016-07-29 16:25:09 +00:00
|
|
|
will then become obsolete.
|
2000-08-31 15:56:15 +00:00
|
|
|
.Sh RETURN VALUES
|
|
|
|
On successful completion,
|
|
|
|
.Fn basename
|
2009-10-06 14:05:57 +00:00
|
|
|
and
|
|
|
|
.Fn basename_r
|
|
|
|
return pointers to the last component of
|
2002-12-18 13:33:04 +00:00
|
|
|
.Fa path .
|
2000-08-31 15:56:15 +00:00
|
|
|
.Pp
|
2009-10-06 14:05:57 +00:00
|
|
|
If they fail, a null pointer is returned and the global variable
|
2000-08-31 15:56:15 +00:00
|
|
|
.Va errno
|
|
|
|
is set to indicate the error.
|
|
|
|
.Sh ERRORS
|
|
|
|
The following error codes may be set in
|
|
|
|
.Va errno :
|
|
|
|
.Bl -tag -width Er
|
|
|
|
.It Bq Er ENAMETOOLONG
|
|
|
|
The path component to be returned was larger than
|
|
|
|
.Dv MAXPATHLEN .
|
|
|
|
.El
|
|
|
|
.Sh SEE ALSO
|
|
|
|
.Xr basename 1 ,
|
|
|
|
.Xr dirname 1 ,
|
|
|
|
.Xr dirname 3
|
|
|
|
.Sh STANDARDS
|
|
|
|
The
|
|
|
|
.Fn basename
|
|
|
|
function conforms to
|
|
|
|
.St -xpg4.2 .
|
|
|
|
.Sh HISTORY
|
|
|
|
The
|
|
|
|
.Fn basename
|
|
|
|
function first appeared in
|
2001-07-10 00:11:00 +00:00
|
|
|
.Ox 2.2
|
|
|
|
and
|
|
|
|
.Fx 4.2 .
|
2000-11-17 11:44:16 +00:00
|
|
|
.Sh AUTHORS
|
2011-06-18 00:33:34 +00:00
|
|
|
.An Todd C. Miller
|
|
|
|
.Sh CAVEATS
|
|
|
|
.Fn basename
|
|
|
|
returns a pointer to internal static storage space that will be overwritten
|
|
|
|
by subsequent calls.
|
|
|
|
.Pp
|
|
|
|
Other vendor implementations of
|
|
|
|
.Fn basename
|
|
|
|
may modify the contents of the string passed to
|
|
|
|
.Fn basename ;
|
|
|
|
this should be taken into account when writing code which calls this function
|
|
|
|
if portability is desired.
|