add seek, read, write
This commit is contained in:
parent
87f3239c52
commit
3b3ce23df0
3
inc/fs.h
3
inc/fs.h
|
@ -56,6 +56,9 @@ int fs_ls(void *d);
|
|||
int fs_la(void *d);
|
||||
int fs_rm(void *d);
|
||||
int fs_open(void *d);
|
||||
int fs_seek(void *d);
|
||||
int fs_read(void *d);
|
||||
int fs_write(void *d);
|
||||
int fs_close(void *d);
|
||||
int fs_allow_write(void *d);
|
||||
int fs_prohibit_write(void *d);
|
||||
|
|
|
@ -21,9 +21,9 @@ static const struct CliCommandEntry cmd[] = {
|
|||
{"rm", 1, (enum CliArgType[]) {STR}, fs_rm},
|
||||
//{"truncate", 2, (enum CliArgType[]) {STR, INT}, fs_truncate},
|
||||
{"open", 1, (enum CliArgType[]) {STR}, fs_open},
|
||||
//{"seek", 2, (enum CliArgType[]) {INT, INT}, fs_seek},
|
||||
//{"read", 2, (enum CliArgType[]) {INT, INT}, fs_read},
|
||||
//{"write", 2, (enum CliArgType[]) {INT, STR}, fs_write},
|
||||
{"seek", 2, (enum CliArgType[]) {INT, INT}, fs_seek},
|
||||
{"read", 2, (enum CliArgType[]) {INT, INT}, fs_read},
|
||||
{"write", 2, (enum CliArgType[]) {INT, STR}, fs_write},
|
||||
{"close", 1, (enum CliArgType[]) {INT}, fs_close},
|
||||
|
||||
// custom commands
|
||||
|
|
11
src/fs.c
11
src/fs.c
|
@ -856,7 +856,7 @@ print_read_data:
|
|||
int fs_write(void *d)
|
||||
{
|
||||
int fd = ((int *) d)[0];
|
||||
char *str = *((char **) d+4);
|
||||
char *str = *((char **) ((char *) d+4));
|
||||
int str_len = strlen(str);
|
||||
|
||||
if (!fs_file_descriptions[fd].inode) {
|
||||
|
@ -890,6 +890,15 @@ int fs_write(void *d)
|
|||
fd, fs_file_descriptions[fd].rw_offset, fs_file_descriptions[fd].rw_offset + str_len);
|
||||
fs_file_descriptions[fd].rw_offset += str_len;
|
||||
|
||||
struct fs_inode f;
|
||||
read_block(fs_file_descriptions[fd].inode, (void *) &f);
|
||||
|
||||
if (fs_file_descriptions[fd].rw_offset > f.size) {
|
||||
pr("Increasing fd %d file size: %d -> %d\n", fd, f.size, f.size + str_len);
|
||||
f.size = fs_file_descriptions[fd].rw_offset;
|
||||
write_block(fs_file_descriptions[fd].inode, (void *) &f);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue