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 func-
     tion 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 func-
     tion  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);
     }


SEE ALSO

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