Files
my-os-project2/kernel/path/path.c
2025-11-06 21:58:24 +01:00

56 lines
852 B
C

#include "path.h"
#include "hal/hal.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;
}
if (path[0] != '/') {
mp[0] = 0;
path[0] = 0;
return;
}
if (hal_strstr(path, "/../") || hal_strstr(path, "/./")
|| hal_strcmp(path, "..") == 0 || hal_strcmp(path, ".") == 0) {
mp[0] = 0;
path[0] = 0;
return;
}
}