61 lines
971 B
C
61 lines
971 B
C
#include <fs/path.h>
|
|
#include <string/string.h>
|
|
|
|
void path_parse(const char *in, char *mp, char *path) {
|
|
if (in == 0 || *in == 0) {
|
|
mp[0] = 0;
|
|
path[0] = 0;
|
|
return;
|
|
}
|
|
|
|
int i = 0, j = 0, colonfound = 0;
|
|
|
|
while (in[i]) {
|
|
if (in[i] == ':') {
|
|
if (colonfound) {
|
|
mp[0] = 0;
|
|
path[0] = 0;
|
|
return;
|
|
}
|
|
colonfound = 1;
|
|
mp[i] = 0;
|
|
i++;
|
|
continue;
|
|
}
|
|
|
|
if (!colonfound) {
|
|
mp[i] = in[i];
|
|
} else {
|
|
path[j++] = in[i];
|
|
}
|
|
|
|
i++;
|
|
}
|
|
|
|
if (!colonfound) {
|
|
mp[i] = 0;
|
|
path[0] = 0;
|
|
} else {
|
|
path[j] = 0;
|
|
}
|
|
}
|
|
|
|
const char *path_basename(const char *path) {
|
|
if (!path) {
|
|
return NULL;
|
|
}
|
|
|
|
const char *aftercolon = string_strchr(path, ':');
|
|
if (aftercolon) {
|
|
path = aftercolon + 1;
|
|
}
|
|
const char *lastslash = NULL;
|
|
for (const char *p = path; *p; p++) {
|
|
if (*p == '/') {
|
|
lastslash = p;
|
|
}
|
|
}
|
|
return lastslash ? lastslash + 1 : path;
|
|
}
|
|
|