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 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 basename () function need not 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)

XBD <libgen.h>

XCU 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.

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.

Austin Group Interpretation 1003.1-2001 #156 is applied.

POSIX.1-2008, Technical Corrigendum 1, XSH/TC1-2008/0041 [75] is applied.

January 1, 2013 posix.fail