Seyshell
Loading...
Searching...
No Matches
Functions
disk.h File Reference
#include <stdio.h>
#include "struct.h"
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include "env.h"
#include "const.h"
#include "utils.h"
Include dependency graph for disk.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

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".
 

Function Documentation

◆ create_disk()

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
    diskPointeur vers le disque virtuel.
    path_to_fileChemin 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()

int do_df ( disk d)

Commande système df. Affiche les statistiques d'utilisation de l'espace disque et des inodes.

  • Parameters
    dPointeur 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
    dPointeur vers le disque virtuel.
    pathOptionnel : 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
    dPointeur vers le disque virtuel.
    dirpathChemin 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
    diskPointeur vers le disque virtuel.
    filepathChemin 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
    diskPointeur vers le disque virtuel.
    filepathChemin 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
    dPointeur vers le disque virtuel.
    filepathChemin 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
    nameNom de l'élément recherché au sein du dossier.
    dir_indexIndex du nœud d'index du répertoire de recherche.
    dPointeur 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
    filenameChaî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
    dPointeur 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
    dPointeur vers le disque virtuel.
    modeMode d'ouverture : 0 pour écraser (>), 1 pour ajouter à la fin (>>).
    fileNom ou chemin du fichier cible devant intercepter le flux.
    inDescripteur 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.