Provided by: manpages-fr-dev_4.21.0-2_all bug

NOM

       realpath - Renvoyer le chemin d'accès absolu

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #include <limits.h>
       #include <stdlib.h>

       char *realpath(const char *restrict chemin,
                      char *restrict chemin_résolu);

   Exigences    de    macros    de   test   de   fonctionnalités   pour   la   glibc   (consulter
   feature_test_macros(7)) :

       realpath() :
           _XOPEN_SOURCE >= 500
               || /* glibc >= 2.19 : */ _DEFAULT_SOURCE
               || /* glibc <= 2.19 : */ _BSD_SOURCE

DESCRIPTION

       realpath développe tous les  liens  symboliques,  et  résout  les  références  à  « /./ »,
       « /../ »  ainsi  que  les caractères « / » supplémentaires dans la chaîne, terminée par un
       caractère NULL, pointée par chemin pour produire une forme canonique du chemin absolu.  Le
       chemin  résultant  est  stocké  sous  la forme d'une chaîne terminée par un caractère NULL
       pouvant contenir jusqu'à PATH_MAX octets, dans le  tampon  pointé  par  chemin_résolu.  Le
       chemin  résultant ne traversera plus de liens symboliques et ne contiendra plus d'éléments
       « /./ » ou « /../ ».

       Si chemin_résolu est NULL, alors realpath()  utilise  malloc(3)  pour  allouer  un  tampon
       allant jusqu'à PATH_MAX octets pour contenir le chemin trouvé, et retourne un pointeur sur
       ce tampon. L'appelant doit libérer ce tampon avec free(3).

VALEUR RENVOYÉE

       S'il n'y a pas d'erreur, realpath() renvoie un pointeur sur chemin_résolu.

       Sinon elle renvoie NULL, le contenu de chemin_résolu n'est pas défini et  errno  prend  la
       valeur du code d'erreur.

ERREURS

       EACCES La  permission  de  recherche ou de lecture n'est pas accordée pour un composant du
              chemin d'accès.

       EINVAL chemin  est  NULL  (avant  la  glibc 2.3,  cette  erreur  est  aussi  renvoyée   si
              chemin_résolu est NULL).

       EIO    Une  erreur  d'entrée-sortie  est  survenue  lors  de  la lecture sur le système de
              fichiers.

       ELOOP  Trop de liens symboliques ont été rencontrés en parcourant le chemin.

       ENAMETOOLONG
              Un élément du chemin d'accès dépasse NAME_MAX  caractères  de  long  ou  le  chemin
              d'accès complet dépasse PATH_MAX caractères.

       ENOENT Le fichier indiqué n'existe pas.

       ENOMEM Plus assez de mémoire.

       ENOTDIR
              Un élément du chemin d'accès n'est pas un répertoire.

ATTRIBUTS

       Pour une explication des termes utilisés dans cette section, consulter attributes(7).

       ┌────────────────────────────────────────────────────────┬──────────────────────┬─────────┐
       │InterfaceAttributValeur  │
       ├────────────────────────────────────────────────────────┼──────────────────────┼─────────┤
       │realpath()                                              │ Sécurité des threads │ MT-Safe │
       └────────────────────────────────────────────────────────┴──────────────────────┴─────────┘

STANDARDS

       4.4BSD, POSIX.1-2001.

       POSIX.1  indique  que  le  comportement  dans  le  cas où chemin_résolu est NULL dépend de
       l'implémentation. POSIX.1-2008 spécifie le comportement décrit dans cette page.

NOTES

       Dans  4.4BSD  et  Solaris,  la  limite  de  longueur  du  chemin  est   MAXPATHLEN   (dans
       <sys/param.h>).  SUSv2  conseille  PATH_MAX  et  NAME_MAX,  dans <limits.h> ou fournis par
       pathconf(3). Un fragment de code typique serait

           #ifdef PATH_MAX
             path_max = PATH_MAX;
           #else
             path_max = pathconf(path, _PC_PATH_MAX);
             if (path_max <= 0)
               path_max = 4096;
           #endif

       (Mais voir quand même la section des BOGUES.)

   Extensions GNU
       Si l'appel échoue avec EACCES ou ENOENT alors que chemin_résolu n'est pas NULL,  alors  le
       préfixe   de  chemin  qui  n'est  pas  lisible  ou  qui  n'existe  pas  est  renvoyé  dans
       chemin_résolu.

BOGUES

       La version du standard POSIX.1-2001 de cette fonctions est erronée par  construction,  car
       elle  ne  permet  pas  de  connaître  la  taille  nécessaire  pour  le  tampon  de  sortie
       chemin_résolu. D'après POSIX.1-2001, un tampon de taille PATH_MAX  suffit,  mais  PATH_MAX
       n'est  pas  nécessairement une constante définie et peut être obtenue avec pathconf(3). En
       outre, interroger pathconf(3) n'aide pas vraiment, car d'une part POSIX prévient  que  les
       résultats  de pathconf(3) peuvent être immenses et inappropriés pour allouer de la mémoire
       et d'autre part pathconf(3) peut renvoyer -1  indiquant  que  PATH_MAX  est  illimité.  La
       fonctionnalité  chemin_résolu == NULL, non standard dans POSIX.1-2008, permet d'éviter ces
       problèmes.

VOIR AUSSI

       realpath(1), readlink(2), canonicalize_file_name(3), getcwd(3), pathconf(3), sysconf(3)

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 bubu <bubub@no-log.org>

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