feat(iso): add close function
This commit is contained in:
parent
99f290634f
commit
1daa8e6263
6
k/fd.c
6
k/fd.c
@ -13,13 +13,14 @@ static int find_next_fd(void)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int register_fd(u32 lba)
|
int register_fd(u32 lba, u32 file_size)
|
||||||
{
|
{
|
||||||
int free_fd = find_next_fd();
|
int free_fd = find_next_fd();
|
||||||
if (free_fd < 0)
|
if (free_fd < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
struct file_entry f = { .open = 1, .lba = lba, .file_offset = 0 };
|
struct file_entry f = { .open = 0, .lba = lba, .file_offset = 0,
|
||||||
|
.file_size = file_size };
|
||||||
fd_table[free_fd] = f;
|
fd_table[free_fd] = f;
|
||||||
return free_fd;
|
return free_fd;
|
||||||
}
|
}
|
||||||
@ -32,6 +33,7 @@ int destroy_fd(int fd)
|
|||||||
fd_table[fd].open = 0;
|
fd_table[fd].open = 0;
|
||||||
fd_table[fd].lba = 0;
|
fd_table[fd].lba = 0;
|
||||||
fd_table[fd].file_offset = 0;
|
fd_table[fd].file_offset = 0;
|
||||||
|
fd_table[fd].file_size = 0;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
5
k/fd.h
5
k/fd.h
@ -9,10 +9,11 @@ struct file_entry
|
|||||||
{
|
{
|
||||||
u8 open;
|
u8 open;
|
||||||
u32 lba;
|
u32 lba;
|
||||||
u64 file_offset;
|
u32 file_offset;
|
||||||
|
u32 file_size;
|
||||||
};
|
};
|
||||||
|
|
||||||
int register_fd(u32 lba);
|
int register_fd(u32 lba, u32 file_size);
|
||||||
int destroy_fd(int fd);
|
int destroy_fd(int fd);
|
||||||
|
|
||||||
#endif /* !FD_H */
|
#endif /* !FD_H */
|
||||||
|
7
k/iso.c
7
k/iso.c
@ -49,7 +49,7 @@ int open(const char *pathname, int flags)
|
|||||||
|
|
||||||
// we found the file
|
// we found the file
|
||||||
if (!length)
|
if (!length)
|
||||||
return register_fd(curr->data_blk.le);
|
return register_fd(curr->data_blk.le, curr->data_size.le);
|
||||||
|
|
||||||
// iteration for one directory
|
// iteration for one directory
|
||||||
while (curr->dir_size != 0)
|
while (curr->dir_size != 0)
|
||||||
@ -71,3 +71,8 @@ int open(const char *pathname, int flags)
|
|||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int close(int fd)
|
||||||
|
{
|
||||||
|
return destroy_fd(fd);
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user