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),