summaryrefslogtreecommitdiff
path: root/Base/usr/share/man/man3/dirname.md
blob: 6a101d9dbf0936c32ab5ec29b84c815c79b397cc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
## Name

dirname - get a file's containing directory path

## Synopsis

```**c++
#include <libgen.h>

char* dirname(char* path);
```

## Description

Given a file path, `dirname()` returns a path to the directory that contains the
file. `dirname()` works purely lexically, meaning it only manipulates the path
as a string, and does not check if such a file or its containing directory
actually exist.

A call to `dirname()` may reuse and modify the passed in `path` buffer. Do not
expect it to have the same value after calling `dirname()`.

## Return value

`dirname()` returns the directory path 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() << dirname(path1); // should be "/home/anon"

    char path2[] = "foo/bar/";
    dbg() << dirname(path2); // should be "foo"

    char path3[] = "foo";
    dbg() << dirname(path3); // should be "."

    char path4[] = "/";
    dbg() << dirname(path4); // should be "/"
}
```

## See also

* [`basename`(3)](basename.md)