docs: docstrings
This commit is contained in:
parent
2b1fed1907
commit
ed47b51f36
22
src/disk.c
22
src/disk.c
@ -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;
|
||||||
}
|
}
|
||||||
@ -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();
|
||||||
|
|||||||
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user