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'ON

       La funcion 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
       via  malloc(),  ordenadas  usando qsort() con la funcion de comparacion
       compar(), y puestas en  la  matriz  namelist  que  esta  reservada  via
       malloc().  Si select es NULL, se seleccionan todas las entradas.

       Las funciones alphasort() y versionsort() pueden ser utilizadas como la
       funcion de comparacion compar().  La primera  ordena  las  entradas  de
       directorio  usando strcoll(3), la ultima usando strverscmp(3) sobre las
       cadenas (*a)->d_name y (*b)->d_name.

VALOR DEVUELTO

       La funcion scandir() devuelve  el  numero  de  entradas  de  directorio
       seleccionadas, o -1 si hubo algun 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 operacion.

CONFORME A

       Ninguna  de  estas  funciones esta en POSIX.  Las funciones scandir() y
       alphasort() son de BSD 4.3, y estan disponibles bajo Linux desde libc4.
       Libc4 y libc5 usan el prototipo mas preciso

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

       pero glibc 2.0 vuelve al prototipo impreciso de BSD.

       La  funcion  versionsort()  es  una  extension 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'EASE TAMBI'EN

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