docs: docstrings

This commit is contained in:
Guamss 2026-03-27 17:16:46 +01:00
parent 2b1fed1907
commit ed47b51f36
3 changed files with 47 additions and 6 deletions

View File

@ -1,8 +1,15 @@
#include "disk.h" #include "disk.h"
#include "struct.h" #include "struct.h"
#include <stdio.h> #include <stdio.h>
#include <stdlib.h>
#include <unistd.h> #include <unistd.h>
/**
* Créer un fichier "disk" de taille MAX_BYTES_PER_BLOC * MAX_BLOCS, renvoi ce
* disque
* @return Le disque créé
*/
disk create_disk() { disk create_disk() {
FILE *fptr; FILE *fptr;
fptr = fopen("disk", "wb"); fptr = fopen("disk", "wb");
@ -21,20 +28,27 @@ disk create_disk() {
d.inodes[0].perms = 0b111111111; // tlm fait ce qu'il veut 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); int n = fwrite(&d, sizeof(disk), 1, fptr);
if (n == 1) { 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); fclose(fptr);
return d; 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; disk d;
FILE *fptr = fopen(filename, "r"); 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); fclose(fptr);
return d; return d;
} }

View File

@ -2,11 +2,15 @@
#include <stdio.h> #include <stdio.h>
#include <unistd.h> #include <unistd.h>
// TODO : Tout ce fichier est à changer je pense
int is_builtin_cmd(char *executable) { int is_builtin_cmd(char *executable) {
(void)executable; (void)executable;
return 0; 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) { int execute_cmd(char **args) {
if (!is_builtin_cmd(args[0])) { if (!is_builtin_cmd(args[0])) {
int pid = fork(); int pid = fork();

View File

@ -6,6 +6,11 @@
#include <string.h> #include <string.h>
#include <unistd.h> #include <unistd.h>
/**
* 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 *read_line() {
char c; char c;
int i = 0; 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 **split_line(char *line) {
char **args = malloc(BUFSIZE * sizeof(char *)); char **args = malloc(BUFSIZE * sizeof(char *));
int i = 0; int i = 0;
@ -49,12 +60,23 @@ char **split_line(char *line) {
return args; 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) { void shell_loop(void) {
char *user = getenv("USER"); char *user = getenv("USER");
char *hostname = malloc(BUFSIZE * sizeof(char)); char *hostname = malloc(BUFSIZE * sizeof(char));
if (hostname == NULL) { if (hostname == NULL) {
dprintf(STDERR_FILENO, "Allocation error"); dprintf(STDERR_FILENO, "Allocation error");
} }
// sur le sgf le hostname se récupèrera pas comme ça donc à changer :)
gethostname(hostname, sizeof(hostname)); gethostname(hostname, sizeof(hostname));
char *line; char *line;
@ -62,7 +84,7 @@ void shell_loop(void) {
int status = 1; int status = 1;
do { 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")); dprintf(STDOUT_FILENO, "%s@%s %s> ", user, hostname, getenv("PWD"));
line = read_line(); line = read_line();
args = split_line(line); args = split_line(line);
@ -72,3 +94,4 @@ void shell_loop(void) {
free(args); free(args);
} while (status); } while (status);
} }