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

NOMBRE

       dirname, basename - Analiza los componentes de un nombre de ruta

SINOPSIS

       #include <libgen.h>

       char *dirname(char *path);
       char *basename(char *path);

DESCRIPCIÓN

       Las  funciones  dirname  y basename descomponen un nombre de ruta terminado en null en un directorio y un
       nombre de fichero.  En el caso habitual, dirname devuelve la cadena que  precede,  pero  no  incluye,  al
       último  carácter '/', y basename devuelve el componente que sigue al último carácter '/'.  Los carácteres
       '/' del final no se cuentan como parte del nombre de ruta.

       Si path no contiene una barra, dirname devuelve la cadena "." mientras que basename devuelve una copia de
       path.  Si path es la cadena "/", entonces tanto dirname como basename devuelven la cadena "/".   Si  path
       es  un  puntero  a  NULL  o  apunta a una cadena vacía, entonces tanto dirname como basename devuelven la
       cadena ".".

       Concatenando la cadena devuelta por dirname, un carácter "/",  y  la  cadena  devuelta  por  basename  se
       obtiene el nombre de ruta completo.

       Tanto  dirname  como  basename  pueden  modificar  el contenido de path, así que si necesita preservar la
       cadena pathname, debería pasar una copia de ella a estas funciones. Además,  dirname  y  basename  pueden
       devolver punteros a memoria estática que puede ser sobreescrita en llamadas posteriores.

       La  siguiente lista de ejemplos (extraídos de SUSv2) muestra las cadenas devueltas por dirname y basename
       para diferentes rutas:

       ruta           dirname        basename
       "/usr/lib"     "/usr"         "lib"
       "/usr/"        "/"            "usr"
       "usr"          "."            "usr"
       "/"            "/"            "/"
       "."            "."            "."
       ".."           "."            ".."

EJEMPLO

       char *dirc, *basec, *bname, *dname;
       char *path = "/etc/passwd";

       dirc = strdup(path);
       basec = strdup(path);
       dname = dirname(dirc);
       bname = basename(basec);
       printf("dirname=%s, basename=%s\n", dname, bname);
       free(dirc);
       free(basec);

VALOR DEVUELTO

       Tanto dirname como basename devuelven punteros a cadenas terminadas en null.

FALLOS

       En versiones de glibc anteriores a 2.2.1 (incluída), dirname no maneja correctamente los nombres de  ruta
       con carácteres '/' al final, y provoca una violación de segmento si se le pasa un argumento NULL.

CONFORME A

       SUSv2

VÉASE TAMBIÉN

       dirname(1), basename(1),

GNU                                             14 diciembre 2000                                     DIRNAME(3)