Provided by: manpages-fr-dev_4.27.0-1_all bug

NOM

       basename, dirname - Analyser les composants d'un chemin d'accès

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #include <libgen.h>

       char *dirname(char *chemin);
       char *basename(char *chemin);

DESCRIPTION

       Attention : il existe deux fonctions basename() différentes ; voir ci-dessous.

       Les  fonctions  dirname()  et  basename()  décomposent  un chemin d'accès, représenté sous la forme d'une
       chaîne terminée par un caractère NULL, 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 chemin n'en font pas partie.

       Si chemin ne contient pas de barre oblique, dirname() renvoie la chaîne « . » et basename()  renvoie  une
       copie  de  la  chaîne  chemin.  Si  chemin  correspond  à  la chaîne « / », alors dirname() et basename()
       renvoient toutes deux la chaîne « / ». Si chemin est un pointeur NULL ou pointe  vers  une  chaîne  vide,
       alors dirname() et basename() renvoient toutes 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 toutes deux modifier le contenu de chemin ; il est  donc  souhaitable  de
       passer une copie de celui-ci lors d'un appel à l'une de ces fonctions.

       Ces  fonctions  peuvent  renvoyer  des  pointeurs  vers  de la mémoire allouée statiquement qui peut être
       écrasée par des appels ultérieurs. Elles peuvent aussi renvoyer un pointeur vers une partie de chemin, de
       façon à ce que la chaîne référencée par chemin ne puisse être modifiée ou libérée que lorsque le pointeur
       renvoyé par la fonction ne sera plus nécessaire.

       La liste d'exemples suivante (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
       NULL (ne pas passer ces pointeurs à free(3)).

ATTRIBUTS

       Pour une explication des termes utilisés dans cette section, consulter attributes(7).
       ┌──────────────────────────────────────────────────────────────────────┬──────────────────────┬─────────┐
       │ InterfaceAttributValeur  │
       ├──────────────────────────────────────────────────────────────────────┼──────────────────────┼─────────┤
       │ basename(), dirname()                                                │ Sécurité des threads │ MT-Safe │
       └──────────────────────────────────────────────────────────────────────┴──────────────────────┴─────────┘

VERSIONS

       Il existe 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 chemin se termine 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
       dans le cas contraire.

STANDARDS

       POSIX.1-2008.

HISTORIQUE

       POSIX.1-2001.

BOGUES

       Dans l'implémentation de la glibc, les versions POSIX de ces fonctions  modifient  l'argument  chemin  et
       génèrent une erreur de segmentation lorsqu'elles sont appelées avec une chaîne statique comme « /usr/ ».

       Avant  la  glibc 2.2.1,  la  version  de la glibc de la fonction dirname() ne gérait pas correctement les
       chemins se terminant par un caractère « / » et générait une erreur de segmentation lorsqu'on lui  passait
       un pointeur NULL comme argument.

EXEMPLES

       L'extrait de code suivant montre l'utilisation de basename() et dirname() :
           char *copie_rep, *copie_base, *nom_base, *nom_rep;
           char *chemin = "/etc/passwd";

           copie_rep = strdup(chemin);
           copie_base = strdup(chemin);
           nom_rep = dirname(copie_rep);
           nom_base = basename(copie_base);
           printf("Nom répertoire = %s, Nom base = %s\n", nom_rep, nom_base);

VOIR AUSSI

       basename(1), dirname(1)

TRADUCTION

       La   traduction   française   de   cette   page   de   manuel   a   été   créée   par  Christophe  Blaess
       <https://www.blaess.fr/christophe/>,   Stéphan   Rafin   <stephan.rafin@laposte.net>,   Thierry   Vignaud
       <tvignaud@mandriva.com>,  François  Micaux,  Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard
       <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)   <jean-luc.coulon@wanadoo.fr>,   Julien   Cristau
       <jcristau@debian.org>,      Thomas      Huriaux      <thomas.huriaux@gmail.com>,     Nicolas     François
       <nicolas.francois@centraliens.net>,    Florentin    Duneau    <fduneau@gmail.com>,     Simon     Paillard
       <simon.paillard@resel.enst-bretagne.fr>,     Denis    Barbier    <barbier@debian.org>,    David    Prévot
       <david@tilapin.org> et Lucien Gentis <lucien.gentis@waika9.com>

       Cette traduction est une documentation libre ; veuillez vous  reporter  à  la  GNU General Public License
       version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si  vous  découvrez  un  bogue  dans la traduction de cette page de manuel, veuillez envoyer un message à
       debian-l10n-french@lists.debian.org.

Pages du manuel de Linux 6.9.1                    15 juin 2024                                       basename(3)