#include "disk.h" #include "struct.h" #include #include #include /** * Créer un fichier "disk" de taille MAX_BYTES_PER_BLOC * MAX_BLOCS, renvoi ce * disque * @return Le disque créé */ disk create_disk() { FILE *fptr; fptr = fopen("disk", "wb"); disk d; for (int i = 0; i < MAX_INODE; i++) { d.inodes[i].filetype = TYPE_NULL; d.inodes[i].perms = 0b000000000; for (int j = 0; j < MAX_BLOCS; j++) { d.inodes[i].blocs[j] = -1; } } // création de la racine '/' d.inodes[0].filetype = TYPE_DIRECTORY; d.inodes[0].perms = 0b111111111; // tlm fait ce qu'il veut d.inodes[0].blocs[0] = 0; // utilise le bloc 0 int n = fwrite(&d, sizeof(disk), 1, fptr); if (n == 1) { dprintf(STDOUT_FILENO, "Disk of size %.2fKb created successfully.\n", (float)(MAX_BYTES_PER_BLOC * MAX_BLOCS) / 1000); } fclose(fptr); return d; } /** * Si un fichier filename existe, alors on le lit et le stocke en mémoire * @param char *filename Le nom du fichier à lire * @return Le disque lu */ disk open_disk(char *filename) { disk d; FILE *fptr = fopen(filename, "r"); if (fptr == NULL) exit(EXIT_FAILURE); fread(&d, sizeof(d), 1, fptr); fclose(fptr); return d; }