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.


CONFORMING TO

       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);

       opendir(3),    readdir(3),    closedir(3),   rewinddir(3),
       telldir(3), seekdir(3).