Files
my-os-project2/kernel/path/path.c

57 lines
860 B
C

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