basename

DIRNAME(3)                Manuel du programmeur Linux               DIRNAME(3)



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

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);

VALEUR RENVOYÃE
       Les fonctions dirname() et basename() renvoient des pointeurs sur des
       chaînes terminées par un caractère nul.

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.

CONFORMITÃ Ã
       POSIX.1-2001

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



GNU                            14 décembre 2000                    DIRNAME(3)