SCANDIR(3)

NOME
scandir, alphasort - varre um diretório buscando entradas que combinem

SINÓPSE
#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 struct dirent **a, const struct dirent **b);

DESCRIÇÃO
A função scandir() varre o diretório dir, chamando select() para cada entrada no diretório. Entradas para as quais select() retorna não-zero são armazenadas em strings alocadas via malloc(), ordenadas usando qsort() com a função de comparação compar(), e coletadas no vetor namelist que é alocado via malloc(). Se select for NULO, todas as entradas são selecionadas.

A função alphasort() pode ser utilizada como a função de comparação para a função scandir() para ordenar as entradas do diretório em ordem alfabética. Seus parâmetros são as duas entradas de diretório, a e b, para comparar.

VALORES RETORNADOS
A função scandir() retorna o número de entradas de diretório selecionadas ou -1 se um erro ocorrer.

A função alphasort() retorna um inteiro menor que, igual a, ou maior que zero se o primeiro argumento é considerado sendo respectivamente menor que, igual a, ou maior que o segundo.

ERROS

ENOMEM
    Memória insuficiente para completar a operação.

DE ACORDO COM
BSD 4.3.

EXEMPLO
/* exibe arquivos no diretório corrente em ordem reversa */
#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);
    }
}

VEJA TAMBÉM
opendir(3), readdir(3), closedir(3), rewinddir(3), telldir(3), seekdir(3).

TRADUZIDO POR LDP-BR em 22/06/2001.

  Tradução:
Marcelo M. de Abreu <mmabreu@terra.com.br>

  Revisão.:
André Luiz Fassone <lonely_wolf@ig.com.br>