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

NOMBRE

       scandir, alphasort, versionsort - busca en un directorio entradas coincidentes

SINOPSIS

       #include <dirent.h>

       int scandir(const char *dir, struct dirent ***namelist,
              int(*select)(const struct dirent *),
              int(*compar)(const struct dirent **, const struct dirent **));

       int alphasort(const void *a, const void *b);
       int versionsort(const void *a, const void *b);

DESCRIPCIÓN

       La  función  scandir()  rastrea  el  directorio  dir, llamando select() en cada entrada de
       directorio. Las entradas para las que select() devuelve  un  valor  distinto  de  cero  se
       almacenan  en  cadenas  (strings) reservadas vía malloc(), ordenadas usando qsort() con la
       función de comparación compar(), y puestas en la matriz namelist que  está  reservada  vía
       malloc().  Si select es NULL, se seleccionan todas las entradas.

       Las  funciones  alphasort()  y  versionsort()  pueden  ser  utilizadas  como la función de
       comparación compar().  La primera ordena las entradas de directorio usando strcoll(3),  la
       última usando strverscmp(3) sobre las cadenas (*a)->d_name y (*b)->d_name.

VALOR DEVUELTO

       La  función  scandir() devuelve el número de entradas de directorio seleccionadas, o -1 si
       hubo algún error.

       Las funciones alphasort() y versionsort() devuelven un entero menor que, igual a, o  mayor
       que  cero  si el primer argumento se considera respectivamente menor que, igual a, o mayor
       que el segundo argumento.

ERRORES

       ENOMEM Memoria insuficiente para completar la operación.

CONFORME A

       Ninguna de estas funciones está en POSIX.  Las funciones scandir() y  alphasort()  son  de
       BSD  4.3, y están disponibles bajo Linux desde libc4.  Libc4 y libc5 usan el prototipo más
       preciso

       int alphasort(const struct dirent **a, const struct dirent **b);

       pero glibc 2.0 vuelve al prototipo impreciso de BSD.

       La función versionsort() es una extensión de GNU, disponible desde glibc 2.1.  Desde glibc
       2.1, alphasort() invoca a strcoll(3); anteriormente usaba strcmp(3).

EJEMPLO

       /* imprimir ficheros en el directorio actual en orden inverso */
       #include <dirent.h>
       main(){
           struct dirent **namelist;
           int n;

           n = scandir(".", &namelist, 0, alphasort);
           if (n < 0)
               perror("scandir");
           else {
               while(n--) {
                   printf("%s\n", namelist[n]->d_name);
                   free(namelist[n]);
               }
               free(namelist);
           }
       }

VÉASE TAMBIÉN

       closedir(3),  fnmatch(3),  opendir(3),  readdir(3),  rewinddir(3),  seekdir(3), strcmp(3),
       strcoll(3), strverscmp(3), telldir(3)