Provided by: manpages-fr-dev_2.64.1-1_all bug

NOM

       dirname, basename - 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 autrement.

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)

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