user: implement mlibc as the libc, finally.
It's finally done.. Signed-off-by: kaguya <vpshinomiya@protonmail.com>
This commit is contained in:
@@ -344,6 +344,8 @@ bool ext2_read_inode_internal(uint32_t inum, ext2_inode_t* out) {
|
||||
if (!ext2_read_block_raw(gdt[g].bg_inode_table + block_off, buf)) {
|
||||
kfree(buf); return false;
|
||||
}
|
||||
printf("ext2_read_inode: inum=%u group=%u idx=%u block_off=%u inode_off=%u\n",
|
||||
inum + 1, g, idx, block_off, inode_off);
|
||||
memcpy(out, buf + inode_off * sb.s_inode_size, sizeof(ext2_inode_t));
|
||||
kfree(buf);
|
||||
return true;
|
||||
@@ -950,16 +952,21 @@ bool ext2_read_root_dir(void) {
|
||||
|
||||
bool ext2_read_file_from_root_internal(const char* name, uint8_t* buf, uint32_t* size) {
|
||||
ext2_inode_t root;
|
||||
printf("EXT2: reading file from root: %s\n", name);
|
||||
if (!ext2_read_inode_internal(2, &root)) return false;
|
||||
printf("EXT2: root inode: size=%u blocks=%u\n", root.i_size, root.i_blocks);
|
||||
|
||||
uint32_t inum;
|
||||
if (!ext2_find_in_dir_internal(&root, name, &inum)) {
|
||||
printf("EXT2: not found: %s\n", name);
|
||||
return false;
|
||||
}
|
||||
printf("EXT2: found in root: inum=%u\n", inum);
|
||||
ext2_inode_t fi;
|
||||
if (!ext2_read_inode_internal(inum, &fi)) return false;
|
||||
printf("EXT2: file inode: size=%u blocks=%u\n", fi.i_size, fi.i_blocks);
|
||||
*size = fi.i_size;
|
||||
printf("EXT2: read file: size=%u\n", *size);
|
||||
return ext2_read_file_internal(&fi, buf);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user