1#include <libgen.h>
2#include <string.h>
3
4char* dirname(char* s) {
5    size_t i;
6    if (!s || !*s)
7        return (char*)".";
8    i = strlen(s) - 1;
9    for (; s[i] == '/'; i--)
10        if (!i)
11            return (char*)"/";
12    for (; s[i] != '/'; i--)
13        if (!i)
14            return (char*)".";
15    for (; s[i] == '/'; i--)
16        if (!i)
17            return (char*)"/";
18    s[i + 1] = 0;
19    return s;
20}
21