Provided by: manpages-fr-dev_3.65d1p1-1_all bug

NOM

       basename, dirname - Analyse des composants d'un chemin d'accès

SYNOPSIS

       #include <libgen.h>

       char *dirname(char *path);

       char *basename(char *path);

DESCRIPTION

       Attention : il y a deux fonctions basename différentes; consultez ci-dessous.

       Les  fonctions basename() et dirname() décomposent une chaîne terminée par un caractère nul, représentant
       un chemin d'accès en ses composants répertoire et nom de fichier. En général, dirname() renvoie la chaîne
       s'étendant jusqu'au dernier « / », sans l'inclure, et basename() renvoie la partie se trouvant  après  le
       dernier « / ». Les caractères « / » en fin de chaîne ne font pas partie du chemin.

       Si  path  ne  contient  pas de barre oblique, dirname() renvoie la chaîne « . » et basename() renvoie une
       copie de la chaîne path. Si path est représenté par  la  chaîne  « / »,  alors  dirname()  et  basename()
       renvoient  tout deux la chaîne « / ». Si path est un pointeur NULL, ou pointe vers une chaîne vide, alors
       dirname() et basename() renvoient tout deux la chaîne « . ».

       En mettant bout à bout la chaîne renvoyée par dirname(), un « / », et la chaîne renvoyée par  basename(),
       on obtient un chemin d'accès complet.

       dirname()  et  basename() peuvent tous deux modifier le contenu de path, il est donc préférable de passer
       une copie de celui-ci lors d'un appel à l'une de ces fonctions.

       Ces fonctions devraient renvoyer des pointeurs vers de la mémoire  allouée  statiquement  qui  peut  être
       réécrite  par  des  appels  ultérieurs.  Cependant, il pourraient renvoyer un pointeur vers une partie de
       path, ainsi la chaîne référencée par path ne doit pas être modifiée  ou  libérée  tant  que  le  pointeur
       renvoyé par la fonction ne possède pas la bonne longueur.

       La  liste  suivante d'exemple (prise dans SUSv2) montre les chaînes renvoyées par dirname() et basename()
       pour différents chemins d'accès :

       chemin     dirname   basename
       /usr/lib   /usr      lib
       /usr/      /         usr
       usr        .         usr
       /          /         /
       .          .         .
       ..         .         ..

VALEUR RENVOYÉE

       Les fonctions dirname() et basename() renvoient des pointeurs sur des chaînes terminées par un  caractère
       nul. (Ne pas passer ces pointeurs à free(3).)

CONFORMITÉ

       POSIX.1-2001.

NOTES

       Il y a deux versions différentes de basename() ; la version POSIX décrite précédemment, et la version GNU
       que l'on utilise avec

           #define _GNU_SOURCE         /* Consultez feature_test_macros(7) */
       #include <string.h>

       La version GNU ne modifie jamais son argument et renvoie une chaîne 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'implémentation de la glibc des versions POSIX de ces fonctions, celles-ci modifient leur argument
       et provoquent une erreur de segmentation lorsqu'elles sont  invoquées  avec  une  chaîne  statique  comme
       « /usr/ ».  Avant  la  glibc 2.2.1,  la  fonction  dirname()  ne géraient pas correctement les chemins se
       terminant par un caractère « / » et déclenchaient 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)

COLOPHON

       Cette page fait partie de la publication 3.65 du projet man-pages Linux. Une description du projet et des
       instructions     pour     signaler     des     anomalies    peuvent    être    trouvées    à    l'adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par
       l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.

       Christophe      Blaess      <http://www.blaess.fr/christophe/>      (1996-2003),       Alain       Portal
       <http://manpagesfr.free.fr/>  (2003-2006).  Florentin  Duneau  et  l'équipe  francophone de traduction de
       Debian (2006-2009).

       Veuillez signaler toute erreur de traduction en écrivant à <debian-l10n-french@lists.debian.org>  ou  par
       un rapport de bogue sur le paquet manpages-fr.

       Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « man -L C
       <section> <page_de_man> ».

GNU                                               30 mars 2009                                       BASENAME(3)