53 lines
1.2 KiB
Markdown
53 lines
1.2 KiB
Markdown
## Name
|
|
|
|
basename - extract file name from a path
|
|
|
|
## Synopsis
|
|
|
|
```**c++
|
|
#include <libgen.h>
|
|
|
|
char* basename(char* path);
|
|
```
|
|
|
|
## Description
|
|
|
|
Given a file path, `basename()` returns that file's name. `basename()` works
|
|
purely lexically, meaning it only manipulates the path as a string, and does
|
|
not check if such a file actually exists.
|
|
|
|
A call to `basename()` may reuse and modify the passed in `path` buffer. Do not
|
|
expect it to have the same value after calling `basename()`.
|
|
|
|
## Return value
|
|
|
|
`basename()` returns the file name as a string. This string may be allocated
|
|
in static memory, or it may point to some part of the original `path` buffer.
|
|
Do not `free()` the returned string, and do not `free()` the original `path`
|
|
buffer while using the returned string.
|
|
|
|
## Examples
|
|
|
|
```c++
|
|
#include <AK/LogStream.h>
|
|
#include <libgen.h>
|
|
|
|
int main()
|
|
{
|
|
char path1[] = "/home/anon/ReadMe.md";
|
|
dbg() << basename(path1); // should be "ReadMe.md"
|
|
|
|
char path2[] = "foo/bar/";
|
|
dbg() << basename(path2); // should be "bar"
|
|
|
|
char path3[] = "foo";
|
|
dbg() << basename(path3); // should be "foo"
|
|
|
|
char path4[] = "/";
|
|
dbg() << basename(path4); // should be "/"
|
|
}
|
|
```
|
|
|
|
## See also
|
|
|
|
* [`dirname`(3)](dirname.md)
|