Provided by: manpages-es_1.55-10_all bug

NOMBRE

       realpath - devuelve el nombre de camino absoluto en forma canónica

SINOPSIS

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

       char *realpath(const char *camino, char *camino_resuelto);

DESCRIPCIÓN

       realpath  expande  todos  los  enlaces simbólicos y resuelve referencias a '/./', '/../' y los caracteres
       extra '/' en la cadena de caracteres terminada en cero  especificada  por  camino,  y  guarda  el  camino
       absoluto  en  forma  canónica  en  el  búfer de tamaño PATH_MAX al que apunte camino_resuelto.  El camino
       resultante no tendrá enlaces simbólicos ni componentes '/./' o '/../'.

VALOR DEVUELTO

       Si no hay error, devuelve un puntero a camino_resuelto.

       Si lo hay, devuelve un puntero NULL y  el  contenido  del  array  camino_resuelto  queda  indefinido.  La
       variable global errno toma un valor que indica el error.

ERRORES

       EACCES Se ha denegado el permiso de lectura o búsqueda para un componente del prefijo del camino.

       EINVAL O  camino  o  camino_resuelto  es  NULL.  (En  libc5  esto simplemente provocaría una violación de
              segmento.)

       EIO    Se ha producido un error de E/S al leer del sistema de ficheros.

       ELOOP  Se han encontrado demasiandos enlaces simbólicos al traducir el camino.

       ENAMETOOLONG
              Un componente del camino ha excedido NAME_MAX caracteres o un camino completo ha excedido PATH_MAX
              caracteres

       ENOENT El fichero especificado no existe.

       ENOTDIR
              Un componente del prefijo del camino no es un directorio.

FALLOS

       Nunca use esta función. No funciona correctamente por cuestiones  de  diseño,  puesto  que  es  imposible
       determinar  un  tamaño  adecuado  para  el buffer de salida.  Según POSIX un buffer de tamaño PATH_MAX es
       suficiente, pero PATH_MAX no necesita ser una constante definida, y  puede  tener  que  obtenerse  usando
       pathconf().   Y preguntar a pathconf() no ayuda mucho realmente, puesto que por una parte, POSIX advierte
       que el resultado de pathconf() puede ser enorme e inapropiado para asignar  memoria.  Y  por  otra  parte
       pathconf() puede devolver -1 para indicar que PATH_MAX no está limitado.

       Las  implementaciones  de  libc4  y  libc5  contienen  un  desbordamiento  de  búfer  (`buffer overflow')
       (solucionado en libc-5.4.13). Por tanto, los programas con el bit SETUID activo como mount necesitan  una
       versión privada.

HISTORIA

       La  función  realpath  apareció por primera vez en BSD 4.4, aportada por Jan-Simon Pendry. En Linux, esta
       función aparece en libc 4.5.21.

CONFORME A

       En BSD 4.4 y  Solaris  el  límite  de  la  longitud  del  camino  es  MAXPATHLEN  (que  se  encuentra  en
       <sys/param.h>).  SUSv2 establece PATH_MAX y NAME_MAX, como aparecen en <limits.h> o proporcionados por la
       función pathconf().  Un fragmento típico de código fuente sería

              #ifdef PATH_MAX
                path_max = PATH_MAX;
              #else
                path_max = pathconf (path, _PC_PATH_MAX);
                if (path_max <= 0)
                  path_max = 4096;
              #endif
              (Véase la sección FALLOS.)

       Las versiones de BSD 4.4, Linux y SUSv2 siempre devuelven un  nombre  de  ruta  absoluta.  Solaris  puede
       devolver  un  nombre  de  ruta relativa cuando el argumento camino es relativo.  El prototipo de realpath
       viene dado en <unistd.h> en libc4 y libc5, y en <stdlib.h> en cualquier otro sitio.

VÉASE TAMBIÉN

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

                                                 24 agosto 1999                                      REALPATH(3)