Man page - basename(3)

Packages contains this manual

Available languages:

en fr es pl ja ru ro zh_TW zh_CN

Manual

basename

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ATTRIBUTS
VERSIONS
STANDARDS
HISTORIQUE
BOGUES
EXEMPLES
VOIR AUSSI
TRADUCTION

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 :

Image grohtml-3878542-1.png

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

Image grohtml-3878542-2.png

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 .