syscalls: stop requiring a trailing slash for directories in chdir and vfs: emove some debug_log calls in follow_path
This commit is contained in:
+8
-9
@@ -240,8 +240,8 @@ int follow_path(const char* path, l9660_file* file, l9660_dir* dir)
|
|||||||
start_from_root = 1;
|
start_from_root = 1;
|
||||||
pos++;
|
pos++;
|
||||||
l9660_fs_open_root(dir, global_fs);
|
l9660_fs_open_root(dir, global_fs);
|
||||||
debug_log("start_from_root\n");
|
//debug_log("start_from_root\n");
|
||||||
debug_log("/");
|
//debug_log("/");
|
||||||
}
|
}
|
||||||
|
|
||||||
//printf("start_from_root: %X\n\n", start_from_root);
|
//printf("start_from_root: %X\n\n", start_from_root);
|
||||||
@@ -261,12 +261,12 @@ int follow_path(const char* path, l9660_file* file, l9660_dir* dir)
|
|||||||
if(path[pos] != '\0')
|
if(path[pos] != '\0')
|
||||||
{
|
{
|
||||||
isdir = 1;
|
isdir = 1;
|
||||||
debug_log("%s->", buf);//this is a directory
|
//debug_log("%s->", buf);//this is a directory
|
||||||
l9660_dir dir2;
|
l9660_dir dir2;
|
||||||
status = l9660_opendirat(&dir2, dir, buf);
|
status = l9660_opendirat(&dir2, dir, buf);
|
||||||
if(status != L9660_OK)
|
if(status != L9660_OK)
|
||||||
{
|
{
|
||||||
debug_log("FUCKFUCKFUCKFUCK BLYAAAT!!!!!\n");
|
//debug_log("FUCKFUCKFUCKFUCK BLYAAAT!!!!!\n");
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
*dir = dir2;
|
*dir = dir2;
|
||||||
@@ -274,20 +274,20 @@ int follow_path(const char* path, l9660_file* file, l9660_dir* dir)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
isdir = 0;
|
isdir = 0;
|
||||||
debug_log("%s", buf);//this is a file
|
//debug_log("%s", buf);//this is a file
|
||||||
status = l9660_openat(file, dir, buf);
|
status = l9660_openat(file, dir, buf);
|
||||||
if(status != L9660_OK)
|
if(status != L9660_OK)
|
||||||
{
|
{
|
||||||
debug_log("PIZDAPIZDA BLYAAAT!!!!!\n");
|
//debug_log("PIZDAPIZDA BLYAAAT!!!!!\n");
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
pos++;
|
pos++;
|
||||||
}
|
}
|
||||||
debug_log("\n");
|
//debug_log("\n");
|
||||||
//printf("buf: %s\n", buf);
|
//printf("buf: %s\n", buf);
|
||||||
debug_log("isdir: %X\n", isdir);
|
//debug_log("isdir: %X\n", isdir);
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
@@ -300,7 +300,6 @@ int follow_path(const char* path, l9660_file* file, l9660_dir* dir)
|
|||||||
|
|
||||||
bool is_root_dir(l9660_dir* dir) {
|
bool is_root_dir(l9660_dir* dir) {
|
||||||
l9660_dirent* dent;
|
l9660_dirent* dent;
|
||||||
l9660_status status;
|
|
||||||
|
|
||||||
l9660_seekdir(dir, 0);//rewind to start
|
l9660_seekdir(dir, 0);//rewind to start
|
||||||
l9660_readdir(dir, &dent);//reaed .
|
l9660_readdir(dir, &dent);//reaed .
|
||||||
|
|||||||
@@ -454,6 +454,17 @@ int sys_chdir(TrapFrame *tf)
|
|||||||
*(current->cwd) = new_cwd;
|
*(current->cwd) = new_cwd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(status == L9660_ENOTFILE)
|
||||||
|
{
|
||||||
|
l9660_dir dir1;
|
||||||
|
l9660_status err = l9660_opendirat(&dir1, &new_cwd, (char*)tf->ebx);
|
||||||
|
if(err != L9660_ENOTDIR)
|
||||||
|
{
|
||||||
|
*(current->cwd) = dir1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
switch(status)
|
switch(status)
|
||||||
{
|
{
|
||||||
case L9660_EIO:
|
case L9660_EIO:
|
||||||
|
|||||||
Reference in New Issue
Block a user