Loading

NOM

       realpath - Renvoie le chemin d’accès absolu.

SYNOPSIS

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

       char *realpath(const char *path, char *resolved_path);

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

       realpath() : _BSD_SOURCE || _XOPEN_SOURCE >= 500

       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  nul,  pointée  par  path  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 nul pouvant
       contenir   jusqu’à   PATH_MAX   octets,   dans  le  tampon  pointé  par
       resolved_path.  Le  chemin  résultant  ne  traversera  plus  de   liens
       symboliques, et ne contiendra plus d’éléments « /./ » ou « /../ ».

       Si  resolved_path  est  NULL,  alors  realpath() utilise malloc(3) pour
       allouer un tampon allant  jusqu’à  PATH_MAX  octets  pour  contenir  le
       chemin  trouvé, et retourner 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
       resolved_path.

       Sinon  elle renvoie NULL, le contenu de resolved_path 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 Soit  path,  soit  resolved_path  est  NULL (dans la libc5, cela
              déclenchait une erreur de segmentation). Mais voir quand même la
              section NOTES ci-dessous.

       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.

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

VERSIONS

       Sous Linux, cette fonction est apparue dans la libc 4.5.21.

CONFORMITÉ

       BSD 4.4, POSIX.1-2001.

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

NOTES

       Dans  BSD 4.4 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 BOGUES).

       Les versions BSD 4.4, Linux  et  SUSv2  renvoient  toujours  un  chemin
       absolu.  Solaris peut renvoyer un chemin relatif si l’argument path est
       relatif. Le prototype de realpath() est donné dans <unistd.h> dans  les
       libc4 et libc5, mais dans <stdlib.h> partout ailleurs.

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 resolved_path. 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é
       resolved_path== NULL, non standard dans POSIX.1-2008,  permet  d’éviter
       ces problèmes.

       Les  implémentations dans les libc4 et libc5 contenaient un débordement
       de tampon (corrigé dans la libc-5.4.13). Ainsi, les programmes Set-UID,
       comme mount(8), ont besoin d’une version privée de cette routine.

VOIR AUSSI

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

COLOPHON

       Cette page fait partie de  la  publication  3.23  du  projet  man-pages
       Linux.  Une description du projet et des instructions pour signaler des
       anomalies      peuvent      être       trouvées       à       l’adresse
       http://www.kernel.org/doc/man-pages/.

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         Nicolas         François
       <nicolas.francois@centraliens.net>   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> ».

                                23 février 2009