BASENAME(3) Library Functions Manual BASENAME(3)

basenamereturn the last component of a pathname


#include <libgen.h>

char *basename(char *path);

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 consists entirely of the ‘/’ character, basename () shall return a pointer to the string "/" . If the string 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 static storage that may then be overwritten by a subsequent call to basename ().

The basename () function need not be reentrant. A function that is not required to be reentrant is not required to be thread-safe.

The basename () function shall return a pointer to the final component of path.

No errors are defined.

The following program fragment returns a pointer to the value , which is the base name of .

#include <libgen.h>
...
char *name = "/usr/lib";
char *base;


base = basename(name);
...

In the following table, the input string is the value pointed to by path, and the output string is the return value of the basename () function.

Input String Output String
/usr/lib lib
/usr/ usr
/ /
/// /
//usr//lib// lib

None.

None.

None.

dirname(3) , the Base Definitions volume of IEEE Std 1003.1-2001 (“POSIX.1”), <libgen.h>, the Shell and Utilities volume of IEEE Std 1003.1-2001 (“POSIX.1”), basename(1)

First released in Issue 4, Version 2.

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.

In the DESCRIPTION, the note about reentrancy is expanded to cover thread-safety.

footer end

December 6, 2001 posix.fail