#include <stdio.h>
#include "struct.h"
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include "env.h"
#include "const.h"
#include "utils.h"
Go to the source code of this file.
|
| disk | create_disk () |
| | Formate et initialise un tout nouveau disque virtuel brut nommé "disk" sur le support hôte.
|
| |
| disk | open_disk (char *filename) |
| | Ouvre un fichier conteneur physique existant sur le système hôte pour charger sa structure logique en mémoire RAM.
|
| |
| int | do_ls (disk *d, char *path) |
| | Commande système ls. Liste l'ensemble des éléments compris dans un répertoire.
|
| |
| int | do_touch (disk *d, char *filepath) |
| | Commande système touch. Crée un nouveau fichier vide à l'emplacement indiqué.
|
| |
| int | do_mkdir (disk *d, char *dirpath) |
| | Commande système mkdir. Génère une arborescence de sous-répertoire d'après un chemin fourni.
|
| |
| int | do_df (disk *d) |
| | Commande système df. Affiche les statistiques d'utilisation de l'espace disque et des inodes.
|
| |
| int | do_rm (disk *disk, char *filepath) |
| | Commande système rm. Supprime un fichier classique ou un lien symbolique.
|
| |
| int | do_rmdir (disk *disk, char *filepath) |
| | Commande système rmdir. Supprime un répertoire vide identifié par son chemin absolu.
|
| |
| int | do_cat (disk *disk, char *path_to_file) |
| | Commande système cat. Affiche le contenu d'un fichier ou redirige l'entrée standard.
|
| |
| int | do_grep (char *arg) |
| |
| int | find_dir_inode_by_name (char *name, int dir_index, disk *d) |
| | Parcourt les entrées d'un répertoire pour extraire l'ID numérique de l'inode correspondant à un nom donné.
|
| |
| int | redirect_out (disk *d, int mode, char *file, int in) |
| | Redirige le flux de données lu depuis un descripteur d'entrée vers un fichier spécifié de notre SGF.
|
| |
| void | persist_on_disk (disk *d) |
| | Synchronise (sauvegarde) l'arborescence logique en mémoire vive dans le conteneur physique "disk".
|
| |
◆ create_disk()
Formate et initialise un tout nouveau disque virtuel brut nommé "disk" sur le support hôte.
- Cette fonction crée la structure logique de base : vidage des tables, initialisation de la racine
/, création automatique des liens auto-référencés . et .. sur le bloc 0, et génération d'un fichier de test.
- Returns
- disk La structure de données mémoire représentant le disque nouvellement formaté.
◆ do_cat()
| int do_cat |
( |
disk * |
disk, |
|
|
char * |
path_to_file |
|
) |
| |
Commande système cat. Affiche le contenu d'un fichier ou redirige l'entrée standard.
- Parameters
-
| disk | Pointeur vers le disque virtuel. |
| path_to_file | Chemin vers le fichier à lire. Si NULL, la fonction affiche en boucle le flux de l'entrée standard. |
- Returns
- int 1 en cas de succès, -1 s'il s'agit d'un répertoire.
◆ do_df()
Commande système df. Affiche les statistiques d'utilisation de l'espace disque et des inodes.
- Parameters
-
| d | Pointeur vers le disque virtuel. |
- Returns
- int Retourne 0 systématiquement après l'affichage sur la sortie standard.
◆ do_grep()
| int do_grep |
( |
char * |
arg | ) |
|
◆ do_ls()
| int do_ls |
( |
disk * |
d, |
|
|
char * |
path |
|
) |
| |
Commande système ls. Liste l'ensemble des éléments compris dans un répertoire.
- Cette fonction colore la sortie selon le type de fichier rencontré (Vert pour un fichier, Bleu pour un dossier).
- Parameters
-
| d | Pointeur vers le disque virtuel. |
| path | Optionnel : chemin vers le dossier à lister. Si NULL, utilise la variable d'environnement PWD. |
- Returns
- int 1 en cas de succès, -1 si le répertoire n'existe pas ou s'il s'agit d'un fichier classique.
◆ do_mkdir()
| int do_mkdir |
( |
disk * |
d, |
|
|
char * |
dirpath |
|
) |
| |
Commande système mkdir. Génère une arborescence de sous-répertoire d'après un chemin fourni.
- Parameters
-
| d | Pointeur vers le disque virtuel. |
| dirpath | Chemin logique qualifiant le nouveau dossier. |
- Returns
- int 0 en cas de succès, -1 en cas d'erreur de cheminement ou si le répertoire est déjà pris.
◆ do_rm()
| int do_rm |
( |
disk * |
disk, |
|
|
char * |
filepath |
|
) |
| |
Commande système rm. Supprime un fichier classique ou un lien symbolique.
- Parameters
-
| disk | Pointeur vers le disque virtuel. |
| filepath | Chemin vers le fichier cible à supprimer. |
- Returns
- int 0 en cas de succès, -1 en cas d'erreur d'accès ou s'il s'agit d'un répertoire.
◆ do_rmdir()
| int do_rmdir |
( |
disk * |
disk, |
|
|
char * |
filepath |
|
) |
| |
Commande système rmdir. Supprime un répertoire vide identifié par son chemin absolu.
- Parameters
-
| disk | Pointeur vers le disque virtuel. |
| filepath | Chemin absolu menant au répertoire à supprimer. |
- Returns
- int 0 en cas de succès, -1 en cas d'erreur de chemin, si le dossier n'est pas vide, ou s'il n'existe pas.
◆ do_touch()
| int do_touch |
( |
disk * |
d, |
|
|
char * |
filepath |
|
) |
| |
Commande système touch. Crée un nouveau fichier vide à l'emplacement indiqué.
- Note
- Si le nom existe déjà, une erreur est renvoyée (le comportement diffère du touch Unix classique).
- Parameters
-
| d | Pointeur vers le disque virtuel. |
| filepath | Chemin complet d'accès au fichier à générer. |
- Returns
- int 0 en cas de succès, -1 si le chemin intermédiaire n'existe pas ou si le nom est indisponible.
◆ find_dir_inode_by_name()
| int find_dir_inode_by_name |
( |
char * |
name, |
|
|
int |
dir_index, |
|
|
disk * |
d |
|
) |
| |
Parcourt les entrées d'un répertoire pour extraire l'ID numérique de l'inode correspondant à un nom donné.
- Parameters
-
| name | Nom de l'élément recherché au sein du dossier. |
| dir_index | Index du nœud d'index du répertoire de recherche. |
| d | Pointeur vers le disque virtuel. |
- Returns
- int L'index numérique de l'inode trouvé, ou -1 en cas d'erreur ou d'absence.
◆ open_disk()
| disk open_disk |
( |
char * |
filename | ) |
|
Ouvre un fichier conteneur physique existant sur le système hôte pour charger sa structure logique en mémoire RAM.
- Parameters
-
| filename | Chaîne de caractères qualifiant l'emplacement du fichier fichier-disque (généralement "disk"). |
- Returns
- disk La structure mémoire complétée par la lecture brute sérialisée.
◆ persist_on_disk()
| void persist_on_disk |
( |
disk * |
d | ) |
|
Synchronise (sauvegarde) l'arborescence logique en mémoire vive dans le conteneur physique "disk".
- Parameters
-
| d | Pointeur vers la structure mémoire globale à sérialiser sur le disque dur réel. |
◆ redirect_out()
| int redirect_out |
( |
disk * |
d, |
|
|
int |
mode, |
|
|
char * |
file, |
|
|
int |
in |
|
) |
| |
Redirige le flux de données lu depuis un descripteur d'entrée vers un fichier spécifié de notre SGF.
- Si le fichier existe déjà, le contenu est soit écrasé, soit complété selon la valeur du paramètre
mode. S'il n'existe pas, un fichier classique est automatiquement créé dans son répertoire d'appartenance.
- Parameters
-
| d | Pointeur vers le disque virtuel. |
| mode | Mode d'ouverture : 0 pour écraser (>), 1 pour ajouter à la fin (>>). |
| file | Nom ou chemin du fichier cible devant intercepter le flux. |
| in | Descripteur d'écriture d'entrée (Pipe, stdin, etc.) depuis lequel lire les octets. |
- Returns
- int 1 après écriture réussie et synchronisation sur le support physique, -1 en cas d'échec de chemin.