NAME¶
scandir, alphasort - scan a directory for matching entries
SYNOPSIS¶
#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);
DESCRIPTION¶
The 
scandir() function scans the directory 
dir, calling
  
select() on each directory entry. Entries for which 
select()
  returns non-zero are stored in strings allocated via 
malloc(), sorted
  using 
qsort() with the comparison function 
compar(), and
  collected in array 
namelist which is allocated via 
malloc(). If
  
select is NULL, all entries are selected.
The 
alphasort() function can be used as the comparison function for the
  
scandir() function to sort the directory entries into alphabetical
  order. Its parameters are the two directory entries, 
a and 
b, to
  compare.
RETURN VALUE¶
The 
scandir() function returns the number of directory entries selected
  or -1 if an error occurs.
The 
alphasort() function returns an integer less than, equal to, or
  greater than zero if the first argument is considered to be respectively less
  than, equal to, or greater than the second.
ERRORS¶
  - ENOMEM
 
  - Insufficient memory to complete the operation.
 
BSD 4.3
EXAMPLE¶
/* print files in current directory in reverse order */
#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);
}
SEE ALSO¶
opendir(3), 
readdir(3), 
closedir(3), 
rewinddir(3),
  
telldir(3), 
seekdir(3).