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)

GNU                                             26 diciembre 2001                                     SCANDIR(3)