Provided by:
manpages-fr-dev_3.27fr1.4-1_all 
NOM
basename, dirname - Analyse des composants d'un chemin d'acces
SYNOPSIS
#include <libgen.h>
char *dirname(char *path);
char *basename(char *path);
DESCRIPTION
Attention : il y a deux fonctions basename differentes; consultez
ci-dessous.
Les fonctions basename() et dirname() decomposent une chaine terminee
par un caractere nul, representant un chemin d'acces en ses composants
repertoire et nom de fichier. En general, dirname() renvoie la chaine
s'etendant jusqu'au dernier << / >>, sans l'inclure, et basename()
renvoie la partie se trouvant apres le dernier << / >>. Les caracteres
<< / >> en fin de chaine ne font pas partie du chemin.
Si path ne contient pas de barre oblique, dirname() renvoie la chaine
<< . >> et basename() renvoie une copie de la chaine path. Si path est
represente par la chaine << / >>, alors dirname() et basename()
renvoient tout deux la chaine << / >>. Si path est un pointeur NULL, ou
pointe vers une chaine vide, alors dirname() et basename() renvoient
tout deux la chaine << . >>.
En mettant bout a bout la chaine renvoyee par dirname(), un << / >>, et
la chaine renvoyee par basename(), on obtient un chemin d'acces
complet.
dirname() et basename() peuvent tous deux modifier le contenu de path,
il est donc preferable de passer une copie de celui-ci lors d'un appel
a l'une de ces fonctions.
Ces fonctions devraient renvoyer des pointeurs vers de la memoire
allouee statiquement qui peut etre reecrite par des appels ulterieurs.
Cependant, il pourraient renvoyer un pointeur vers une partie de path,
ainsi la chaine referencee par path ne doit pas etre modifiee ou
liberee tant que le pointeur renvoye par la fonction ne possede pas la
bonne longueur.
La liste suivante d'exemple (prise dans SUSv2) montre les chaines
renvoyees par dirname() et basename() pour differents chemins d'acces :
path dirname basename
"/usr/lib" "/usr" "lib"
"/usr/" "/" "usr"
"usr" "." "usr"
"/" "/" "/"
"." "." "."
".." "." ".."
VALEUR RENVOY'EE
Les fonctions dirname() et basename() renvoient des pointeurs sur des
chaines terminees par un caractere nul. (Ne pas passer ces pointeurs a
free(3).)
CONFORMIT'E
POSIX.1-2001.
NOTES
Il y a deux versions differentes de basename() ; la version POSIX
decrite precedemment, et la version GNU que l'on utilise avec
#define _GNU_SOURCE
#include <string.h>
La version GNU ne modifie jamais son argument et renvoie une chaine
vide lorsque path finit par une barre oblique << / >> et en particulier
aussi lorsqu'il vaut << / >>. Il n'y a pas de version GNU de dirname().
Avec la glibc, on utilise la version POSIX de basename() lorsque
<libgen.h> est inclus, et la version GNU sinon.
BOGUES
Dans l'implementation de la glibc des versions POSIX de ces fonctions,
celles-ci modifient leur argument et provoquent une erreur de
segmentation lorsqu'elles sont invoquees avec une chaine statique comme
<< /usr/ >>. Avant la glibc 2.2.1, la fonction dirname() ne geraient
pas correctement les chemins se terminant par un caractere << / >> et
declenchaient une erreur de segmentation en recevant un pointeur NULL.
EXEMPLE
char *dirc, *basec, *bname, *dname;
char *path = "/etc/passwd";
dirc = strdup(path);
basec = strdup(path);
dname = dirname(dirc);
bname = basename(basec);
printf("dirname=%s, basename=%s\n", dname, bname);
VOIR AUSSI
basename(1), dirname(1), feature_test_macros(7)
COLOPHON
Cette page fait partie de la publication 3.27 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent etre trouvees a l'adresse
<URL:http://www.kernel.org/doc/man-pages/>.
TRADUCTION
Depuis 2010, cette traduction est maintenue a l'aide de l'outil po4a
<URL:http://po4a.alioth.debian.org/> par l'equipe de traduction
francophone au sein du projet perkamon
<URL:http://perkamon.alioth.debian.org/>.
Christophe Blaess <URL:http://www.blaess.fr/christophe/> (1996-2003),
Alain Portal <URL:http://manpagesfr.free.fr/> (2003-2006). Florentin
Duneau et l'equipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en ecrivant a
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir acces a la version anglaise de ce document
en utilisant la commande << man -L C <section> <page_de_man> >>.