The Open Group Base Specifications Issue 7
IEEE Std 1003.1, 2013 Edition
Copyright © 2001-2013 The IEEE and The Open Group

#### NAME

> basename - return the last component of a pathname

#### SYNOPSIS

> ``[XSI] #include <libgen.h>
> 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 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.

The following sections are informative.

#### 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 basename()

> 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"

#### APPLICATION USAGE

> None.

#### RATIONALE

> None.

#### FUTURE DIRECTIONS

> None.

#### SEE ALSO

> dirname

> XBD <libgen.h>

> XCU basename

#### 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/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.

End of informative text.

return to top of page

UNIX ® is a registered Trademark of The Open Group.
POSIX ® is a registered Trademark of The IEEE.
Copyright © 2001-2013 The IEEE and The Open Group, All Rights Reserved
[ Main Index | XBD | XSH | XCU | XRAT ]