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 "struct.h"
#include <stdio.h>
#include <stdlib.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() {
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;
}

View File

@ -2,11 +2,15 @@
#include <stdio.h>
#include <unistd.h>
// 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();

View File

@ -6,6 +6,11 @@
#include <string.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 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);
}