dwww Home | Manual pages | Find package

basename(3)                Library Functions Manual                basename(3)

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 che-
       min ; 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 li-
       bé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 ren-
       voyé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 │
       └─────────────────────────────────────┴──────────────────────┴─────────┘

STANDARDS
       POSIX.1-2001, POSIX.1-2008.

NOTES
       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  par-
       ticulier  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  <lib-
       gen.h> est inclus et la version GNU dans le cas contraire.

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  dir-
       name() :
           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 Chris-
       tophe Blaess <https://www.blaess.fr/christophe/>, Stéphan  Rafin  <ste-
       phan.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.cou-
       lon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>,  Thomas  Huriaux
       <thomas.huriaux@gmail.com>,  Nicolas François <nicolas.francois@centra-
       liens.net>, Florentin Duneau <fduneau@gmail.com>, Simon  Paillard  <si-
       mon.paillard@resel.enst-bretagne.fr>,    Denis   Barbier   <barbier@de-
       bian.org>, David  Prévot  <david@tilapin.org>  et  Lucien  Gentis  <lu-
       cien.gentis@waika9.com>

       Cette traduction est une documentation libre ; veuillez vous reporter à
       la       GNU       General       Public        License        version 3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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.03   5 février 2023                     basename(3)

Generated by dwww version 1.15 on Sat Jun 29 01:47:00 CEST 2024.