Provided by: manpages-fr_1.67.0-1_all bug

NOM

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

SYNOPSIS

       #include <sys/param.h>
       #include <stdlib.h>

       char *realpath (char *path, char resolved_path[]);

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 caractere nul, pointée par path et stocke le
       résultat dans le buffer de taille MAXPATHLEN pointé par  resolved_path.
       Le  chemin  résultant  ne  traversera  plus de liens symboliques, et ne
       contiendra plus d’éléments /./ ou /../.

VALEUR RENVOYÉE

       S’il  n’y  a  pas  d’erreur,  realpath()  renvoie   un   pointeur   sur
       resolved_path.

       Sinon  elle  renvoie  NULL, et resolved_path contient le chemin d’accès
       absolu vers l’élément de path qui ne peut pas  être  résolu,  et  errno
       contient le code d’erreur.

ERREURS

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

       EINVAL Soit  path  soit  resolv_path  est  NULL  (Dans  la  libc5  cela
              déclenchait une faute de segmentation).

       EIO    Une  erreur  d’entrée/sortie  s’est  produite  sur le système de
              fichiers.

       ELOOP  Trop de liens symboliques rencontrés.

       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.

BOGUES

       N’utilisez jamais cette fonction. Son design est  erroné  cae  elle  ne
       permet  pas de connaître la taille nécessaire pour le buffer de sortie.
       D’après POSIX un buffer de taille PATH_MAX suffit, mais PATH_MAX  n’est
       pas  nécessaire  une  constante  définie  et  peut  être  obtenue  avec
       pathconf().  En outre, interroger pathconf() n’aide pas  vraiment,  car
       d’une  part POSIX prévient que les résultats de pathconf() peuvent être
       immenses et inappropriés pour allouer de la  mémoire  et  d’autre  part
       pathconf() peut renvoyer -1 indiquant que PATH_MAX est illimité.

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

HISTORIQUE

       La  fonction realpath est apparue dans BSD 4.4, due à Jan-Simon Pendry.
       Sous Linux, cette fonction est apparue dans la libc 4.5.21.

CONFORMITÉ

       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().   Un  fragmen  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 plus haut).

       Les  versions  BSD  4.4,  Linux  et  SUSv2  renvoient toujous 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.

VOIR AUSSI

       readlink(2),  getcwd(3),  pathconf(3),  sysconf(3)  Christophe  Blaess,
       1996-2003.