Provided by:
manpages-es_1.55-10_all 
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)