Provided by: manpages-es_1.55-8_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),