Provided by: manpages-fr-dev_3.27fr1.4-1_all bug

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