.\" -*- coding: UTF-8 -*- .\" Copyright (c) 2000 by Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\" Created, 14 Dec 2000 by Michael Kerrisk .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH BASENAME 3 "9 juin 2020" GNU "Manuel du programmeur Linux" .SH NOM basename, dirname \- Analyser les composants d'un chemin d'accès .SH SYNOPSIS .nf \fB#include \fP .PP \fBchar *dirname(char *\fP\fIchemin\fP\fB);\fP .PP \fBchar *basename(char *\fP\fIchemin\fP\fB);\fP .fi .SH DESCRIPTION Attention\ : il existe deux fonctions \fBbasename\fP() différentes – voir ci\-dessous. .PP Les fonctions \fBdirname\fP() et \fBbasename\fP() 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, \fBdirname\fP() renvoie la chaîne s'étendant jusqu'au dernier «\ /\ », sans l'inclure, et \fBbasename\fP() renvoie la partie se trouvant après le dernier «\ /\ ». Les caractères «\ /\ » en fin de chemin n'en font pas partie. .PP Si \fIchemin\fP ne contient pas de barre oblique, \fBdirname\fP() renvoie la chaîne «\ .\ » et \fBbasename\fP() renvoie une copie de la chaîne \fIchemin\fP. Si \fIchemin\fP correspond à la chaîne «\ /\ », alors \fBdirname\fP() et \fBbasename\fP() renvoient toutes deux la chaîne «\ /\ ». Si \fIchemin\fP est un pointeur NULL ou pointe vers une chaîne vide, alors \fBdirname\fP() et \fBbasename\fP() renvoient toutes deux la chaîne «\ .\ ». .PP En mettant bout à bout la chaîne renvoyée par \fBdirname\fP(), un «\ /\ » et la chaîne renvoyée par \fBbasename\fP(), on obtient un chemin d'accès complet. .PP \fBdirname\fP() et \fBbasename\fP() peuvent toutes deux modifier le contenu de \fIchemin\fP\ ; il est donc souhaitable de passer une copie de celui\-ci lors d'un appel à l'une de ces fonctions. .PP 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 \fIchemin\fP, de façon à ce que la chaîne référencée par \fIchemin\fP ne puisse être modifiée ou libérée que lorsque le pointeur renvoyé par la fonction ne sera plus nécessaire. .PP La liste d'exemples suivante (prise dans SUSv2) montre les chaînes renvoyées par \fBdirname\fP() et \fBbasename\fP() pour différents chemins d'accès\ : .RS .TS lb lb lb l l l l. chemin dirname basename /usr/lib /usr lib /usr/ / usr usr . usr / / / \&. . . \&.. . .. .TE .RE .SH "VALEUR RENVOYÉE" Les fonctions \fBdirname\fP() et \fBbasename\fP() renvoient des pointeurs sur des chaînes terminées par un caractère NULL (ne pas passer ces pointeurs à \fBfree\fP(3)). .SH ATTRIBUTS Pour une explication des termes utilisés dans cette section, consulter \fBattributes\fP(7). .TS allbox; lbw21 lb lb l l l. Interface Attribut Valeur T{ \fBbasename\fP(), \fBdirname\fP() T} Sécurité des threads MT\-Safe .TE .SH CONFORMITÉ POSIX.1\-2001, POSIX.1\-2008. .SH NOTES Il existe deux versions différentes de \fBbasename\fP()\ : la version POSIX décrite précédemment et la version GNU que l'on utilise avec .PP .in +4n .EX \fB #define _GNU_SOURCE\fP /* Consultez feature_test_macros(7) */ \fB#include \fP .EE .in .PP La version GNU ne modifie jamais son argument et renvoie une chaîne vide lorsque \fIchemin\fP se termine par une barre oblique «\ /\ », et en particulier aussi lorsqu'il vaut «\ /\ ». Il n'y a pas de version GNU de \fBdirname\fP(). .PP Avec la glibc, on utilise la version POSIX de \fBbasename\fP() lorsque \fI\fP est inclus et la version GNU dans le cas contraire. .SH BOGUES Dans l'implémentation de la glibc, les versions POSIX de ces fonctions modifient l'argument \fIchemin\fP et génèrent une erreur de segmentation lorsqu'elles sont appelées avec une chaîne statique comme «\ /usr/\ ». .PP Avant la glibc\ 2.2.1, la version de la glibc de la fonction \fBdirname\fP() 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. .SH EXEMPLES L'extrait de code suivant montre l'utilisation de \fBbasename\fP() et \fBdirname\fP()\ : .in +4n .EX 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\en", nom_rep, nom_base); .EE .in .SH "VOIR AUSSI" \fBbasename\fP(1), \fBdirname\fP(1) .SH COLOPHON Cette page fait partie de la publication\ 5.10 du projet \fIman\-pages\fP Linux. Une description du projet et des instructions pour signaler des anomalies et la dernière version de cette page peuvent être trouvées à l'adresse \%https://www.kernel.org/doc/man\-pages/. .PP .SH TRADUCTION La traduction française de cette page de manuel a été créée par Christophe Blaess , Stéphan Rafin , Thierry Vignaud , François Micaux, Alain Portal , Jean-Philippe Guérard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas François , Florentin Duneau , Simon Paillard , Denis Barbier , David Prévot et Lucien Gentis . .PP Cette traduction est une documentation libre ; veuillez vous reporter à la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. .PP Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à .MT debian-l10n-french@lists.debian.org .ME .