Provided by: manpages-fr-dev_3.17.1-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; voyez
       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 :

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

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
       #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), feature_test_macros(7)

COLOPHON

       Cette page fait partie de  la  publication  3.17  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

       Cette  page  de  manuel  a  été  traduite et mise à jour par Christophe
       Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis  par
       Alain  Portal  <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Florentin Duneau <fduneau@gmail.com> et l’équipe
       francophone de traduction de Debian.

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