diff --git a/src/disk.c b/src/disk.c index 7b2dd57..49194b5 100644 --- a/src/disk.c +++ b/src/disk.c @@ -391,3 +391,13 @@ disk open_disk(char *filename) { fclose(fptr); return d; } + +void persist_on_disk(disk* d) { + FILE *fptr; + fptr = fopen("disk", "wb"); + + int n = fwrite(d, sizeof(disk), 1, fptr); + if (n != 1) { + dprintf(STDERR_FILENO, "Failed to persist datas on disk\n"); + } +} \ No newline at end of file diff --git a/src/disk.h b/src/disk.h index 48a7910..c7a3c11 100644 --- a/src/disk.h +++ b/src/disk.h @@ -18,4 +18,5 @@ int do_ls(disk *d, char* path); int do_touch(disk *d, char *filepath); int do_mkdir(disk* d, char *dirpath); int do_df(disk *d); -int find_dir_inode_by_name(char *name, int dir_index, disk *d); \ No newline at end of file +int find_dir_inode_by_name(char *name, int dir_index, disk *d); +void persist_on_disk(disk* d); \ No newline at end of file diff --git a/src/exec.c b/src/exec.c index a4efaec..4429d8b 100644 --- a/src/exec.c +++ b/src/exec.c @@ -89,13 +89,15 @@ int do_echo(char **args) { int child_process_job(disk *d, char **args) { if (strcmp("ls", args[0]) == 0) { - return do_ls(d, args[1]); + do_ls(d, args[1]); } else if (strcmp("mkdir", args[0]) == 0) { - return do_mkdir(d, args[1]); + do_mkdir(d, args[1]); + persist_on_disk(d); } else if (strcmp("touch", args[0]) == 0) { - return do_touch(d, args[1]); + do_touch(d, args[1]); + persist_on_disk(d); } else if (strcmp("df", args[0]) == 0) { - return do_df(d); + do_df(d); } else { dprintf(STDERR_FILENO, "%s: no such command\n", args[0]); }