blob: d35e6ea62443a8c065911dd4ca997ebd152a1117 (
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
|
#include <string.h>
#include <libgen.h>
/*
path dirname basename
"/usr/lib" "/usr" "lib"
"/usr/" "/" "usr"
"usr" "." "usr"
"/" "/" "/"
"." "." "."
".." "." ".."
*/
char *dirname(char *path) {
char *c;
again:
if (!(c=strrchr(path,'/'))) return ".";
while (c[1]==0) { /* remove trailing slashes */
if (c==path) return c; /* unless path=='/' */
*c=0;
if (*--c!='/') break;
}
if (*c=='/') { if (c!=path) *c=0; return path; }
goto again;
}
|