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