got some of the pty actually working in userspace
This commit is contained in:
15
kernel/vfs.c
15
kernel/vfs.c
@@ -28,9 +28,11 @@ void vfs_mount(vfs_node_t* _mnt, vfs_node_t* _fs) {
|
||||
|
||||
vfs_node_t* vfs_find(const char* path) {
|
||||
vfs_node_t* current = root;
|
||||
if (current->mnt) {
|
||||
current = current->mnt;
|
||||
}
|
||||
|
||||
char* sav = NULL;
|
||||
|
||||
size_t path_sz = strlen(path) + 1;
|
||||
char* path_cpy = kalloc(path_sz);
|
||||
memset((uint8_t*)path_cpy, 0, path_sz);
|
||||
@@ -38,24 +40,27 @@ vfs_node_t* vfs_find(const char* path) {
|
||||
|
||||
char* tkn = strtok_r(path_cpy, "/", &sav);
|
||||
while (tkn != NULL) {
|
||||
if (current && current->mnt) {
|
||||
current = current->mnt;
|
||||
}
|
||||
|
||||
if (!current || !current->find) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
current = current->find(current, tkn);
|
||||
tkn = strtok_r(NULL, "/", &sav);
|
||||
|
||||
if (current == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
tkn = strtok_r(NULL, "/", &sav);
|
||||
if (tkn && !(current->flags & VFS_DIRECTORY)) {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
kfree(path_cpy);
|
||||
|
||||
kfree(path_cpy);
|
||||
return current;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user