From ed47b51f367ce972413ef133d2c2e01e5e2917b6 Mon Sep 17 00:00:00 2001 From: Guamss Date: Fri, 27 Mar 2026 17:16:46 +0100 Subject: [PATCH] docs: docstrings --- src/disk.c | 24 +++++++++++++++++++----- src/exec.c | 4 ++++ src/parsing.c | 25 ++++++++++++++++++++++++- 3 files changed, 47 insertions(+), 6 deletions(-) diff --git a/src/disk.c b/src/disk.c index 7c0e525..16987c6 100644 --- a/src/disk.c +++ b/src/disk.c @@ -1,8 +1,15 @@ #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"); @@ -19,22 +26,29 @@ disk create_disk() { // 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 - + 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); + dprintf(STDOUT_FILENO, "Disk of size %.2fKb created successfully.\n", + (float)(MAX_BYTES_PER_BLOC * MAX_BLOCS) / 1000); } fclose(fptr); return d; } -disk open_disk(char* filename) { +/** + * 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"); - fread(&d, sizeof(d),1, fptr); + if (fptr == NULL) + exit(EXIT_FAILURE); + fread(&d, sizeof(d), 1, fptr); fclose(fptr); return d; } \ No newline at end of file diff --git a/src/exec.c b/src/exec.c index edfa8bd..497248d 100644 --- a/src/exec.c +++ b/src/exec.c @@ -2,11 +2,15 @@ #include #include +// TODO : Tout ce fichier est à changer je pense + int is_builtin_cmd(char *executable) { (void)executable; return 0; } +// à changer parce que je veux pas chercher dans le PATH, je veux juste executer +// les futures primitives qui seront implémentées int execute_cmd(char **args) { if (!is_builtin_cmd(args[0])) { int pid = fork(); diff --git a/src/parsing.c b/src/parsing.c index 8e94d60..ae49d27 100644 --- a/src/parsing.c +++ b/src/parsing.c @@ -6,6 +6,11 @@ #include #include +/** + * Attend que l'utilisateur appuie sur entrée pour récupérer la ligne écrite + * puis la renvoi + * @return La ligne écrite par l'utilisateur + */ char *read_line() { char c; int i = 0; @@ -29,6 +34,12 @@ char *read_line() { } } +/** + * Sépare une ligne par des espaces (pour la ligne "ls -l" ça va renvoyer {"ls", + * "-l"}) + * @param char *line la ligne à parser + * @return la liste des arguments de la commande + */ char **split_line(char *line) { char **args = malloc(BUFSIZE * sizeof(char *)); int i = 0; @@ -49,12 +60,23 @@ char **split_line(char *line) { return args; } +/** + * La boucle du shell, elle consiste en trois étapes : + * - Quand l'utilisateur appui sur entrer pour récupérer son entrée standard + * - Parser la ligne en fonction de ses espaces + * - Exécuter la commande demandée + * @see char* read_line() + * @see char** split_line(char *line) + * @see int execute_cmd(char **args) + */ void shell_loop(void) { char *user = getenv("USER"); + char *hostname = malloc(BUFSIZE * sizeof(char)); if (hostname == NULL) { dprintf(STDERR_FILENO, "Allocation error"); } + // sur le sgf le hostname se récupèrera pas comme ça donc à changer :) gethostname(hostname, sizeof(hostname)); char *line; @@ -62,7 +84,7 @@ void shell_loop(void) { int status = 1; do { - + // ça aussi c'est pas bien, ça sera à changer une fois le sgf fonctionnel dprintf(STDOUT_FILENO, "%s@%s %s> ", user, hostname, getenv("PWD")); line = read_line(); args = split_line(line); @@ -72,3 +94,4 @@ void shell_loop(void) { free(args); } while (status); } +