NAME
basename — return
the last component of a pathname
SYNOPSIS
char *basename(char *path);
DESCRIPTION
The basename () function shall take the
pathname pointed to by path and return a pointer to the
final component of the pathname, deleting any trailing
‘/’ characters.
If the string pointed to by path consists
entirely of the ‘/’ character,
basename () shall return a pointer to the string
"/". If the string pointed to by
path is exactly "//", it
is implementation-defined whether ‘/’
or "//" is returned.
If path is a null pointer or points to an empty
string, basename () shall return a pointer to the
string ".".
The basename () function may modify the
string pointed to by path, and may return a pointer to
internal storage. The returned pointer might be invalidated or the storage
might be overwritten by a subsequent call to
basename (). The returned pointer might also be
invalidated if the calling thread is terminated.
The basename () function need not be
thread-safe.
RETURN VALUE
The basename () function shall return a
pointer to the final component of path.
ERRORS
No errors are defined.
EXAMPLES
Using basename()
The following program fragment returns a pointer to the value lib, which is the base name of /usr/lib.
#include <libgen.h> ... char name[] = "/usr/lib"; char *base; base = basename(name); ...
Sample Input and Output Strings for the basename() and dirname() Functions and the basename and dirname Utilities
| basename() and dirname Functions path Argument | String returned by basename() | String returned by dirname() | basename and dirname Utilities string Operand | Output Written by basename utility | Output Written by dirname utility |
| usr | usr | . | usr | usr | . |
| usr/ | usr | . | usr/ | usr | . |
| . | . | . or empty string | . | ||
| / | / | / | / | / | / |
| // | / or // | / or // | // | / or // | / or // |
| /// | / | / | /// | / | / |
| /usr/ | usr | / | /usr/ | usr | / |
| /usr/lib | lib | /usr | /usr/lib | lib | /usr |
| //usr//lib// | lib | //usr | //usr//lib// | lib | //usr |
| /home//dwc//test | test | /home//dwc | /home//dwc//test | test | /home//dwc |
APPLICATION USAGE
None.
RATIONALE
None.
FUTURE DIRECTIONS
None.
SEE ALSO
XBD <libgen.h>
XCU basename(1)
CHANGE HISTORY
First released in Issue 4, Version 2.
Issue 5
Moved from X/OPEN UNIX extension to BASE.
Normative text previously in the APPLICATION USAGE section is moved to the DESCRIPTION.
A note indicating that this function need not be reentrant is added to the DESCRIPTION.
Issue 6
In the DESCRIPTION, the note about reentrancy is expanded to cover thread-safety.
IEEE Std 1003.1-2001 (“POSIX.1”)/Cor 2-2004, item XSH/TC2/D6/20 is applied, changing the DESCRIPTION to make it clear that the string referenced is the string pointed to by path .
Issue 7
Austin Group Interpretation 1003.1-2001 #156 is
applied.
POSIX.1-2008, Technical Corrigendum 1,
XSH/TC1-2008/0041 [75] is applied.
POSIX.1-2008, Technical Corrigendum 2,
XSH/TC2-2008/0047 [656], XSH/TC2-2008/0048 [928], and XSH/TC2-2008/0049
[612] are applied.
End of informative text.