#include "env.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
Go to the source code of this file.
|
| void | canonicalize_path (char *path) |
| | Canonicalise un chemin absolu en résolvant les expressions de navigation relative "." et "..".
|
| |
| void | format_path (char *dest, char *src, int dest_len) |
| | Formate un chemin source (src) pour s'assurer qu'il devienne un chemin absolu exploitable.
|
| |
| int | get_name_and_parent_path_by_absolute_path (char *dirpath, char **parent_path, char **dirname) |
| | Extrait séparément le chemin du dossier parent et le nom d'un fichier à partir d'un chemin absolu.
|
| |
| int | get_dirname_and_parent_path_by_absolute_path (char *dirpath, char **parent_path, char **dirname) |
| | Extrait séparément le chemin du dossier parent et le nom d'un répertoire à partir d'un chemin absolu.
|
| |
◆ canonicalize_path()
| void canonicalize_path |
( |
char * |
path | ) |
|
Canonicalise un chemin absolu en résolvant les expressions de navigation relative "." et "..".
Cette fonction nettoie le chemin en appliquant un algorithme de pile (Stack) :
- Divise le chemin en tokens séparés par des '/'.
- Chaque dossier classique est empilé.
- Un élément "." est simplement ignoré.
- Un élément ".." dépile l'élément supérieur (remonte d'un niveau), sans descendre en dessous de la racine. Le chemin d'origine est ensuite réécrit proprement sous sa forme absolue finale aplatie.
- Parameters
-
| path | Pointeur vers la chaîne contenant le chemin à simplifier. Modifié directement en place. |
◆ format_path()
| void format_path |
( |
char * |
dest, |
|
|
char * |
src, |
|
|
int |
dest_len |
|
) |
| |
Formate un chemin source (src) pour s'assurer qu'il devienne un chemin absolu exploitable.
- Si le chemin source est vide, NULL ou égal à "/", la destination reçoit "/".
- Si le chemin source est déjà absolu (commence par '/'), il est copié tel quel.
- Si le chemin est relatif, la fonction récupère le répertoire de travail actuel ("PWD") via l'environnement pour reconstruire le chemin absolu équivalent sous la forme
PWD/src.
- Parameters
-
| dest | Tampon de destination devant recevoir le chemin absolu formaté. |
| src | Chaîne de caractères du chemin d'origine (relatif ou absolu). |
| dest_len | Taille maximale allouée pour le tampon de destination (évite les dépassements). |
◆ get_dirname_and_parent_path_by_absolute_path()
| int get_dirname_and_parent_path_by_absolute_path |
( |
char * |
dirpath, |
|
|
char ** |
parent_path, |
|
|
char ** |
dirname |
|
) |
| |
Extrait séparément le chemin du dossier parent et le nom d'un répertoire à partir d'un chemin absolu.
- Note
- Cette fonction applique le même algorithme binaire de découpage que
- See also
- get_name_and_parent_path_by_absolute_path, mais s'applique sémantiquement aux répertoires.
- Parameters
-
| dirpath | Le chemin absolu du répertoire à traiter. |
| parent_path | Pointeur de sortie vers la chaîne allouée du dossier parent. |
| dirname | Pointeur de sortie vers la chaîne allouée du nom du répertoire ciblé. |
- Returns
- int 0 en cas de succès, -1 si l'entrée est NULL ou vide.
◆ get_name_and_parent_path_by_absolute_path()
| int get_name_and_parent_path_by_absolute_path |
( |
char * |
path, |
|
|
char ** |
parent_path, |
|
|
char ** |
name |
|
) |
| |
Extrait séparément le chemin du dossier parent et le nom d'un fichier à partir d'un chemin absolu.
La fonction isole le dernier segment du chemin en recherchant le dernier caractère '/'.
- Si aucun '/' n'est trouvé, le répertoire parent est défini sur le "PWD" actuel et le nom correspond au chemin brut.
- Si le chemin se termine par un '/' optionnel, ce dernier est temporairement tronqué pour éviter une fausse interprétation.
- Note
- Les deux pointeurs de sortie
parent_path et name reçoivent des chaînes allouées dynamiquement par strdup(). Elles doivent être libérées par l'appelant.
- Parameters
-
| path | Le chemin absolu d'origine à analyser. |
| parent_path | Pointeur de sortie qui recevra l'adresse du chemin du dossier parent alloué. |
| name | Pointeur de sortie qui recevra l'adresse du nom isolé du fichier alloué. |
- Returns
- int 0 en cas de succès, -1 si le paramètre path est invalide (NULL ou vide).