scandir,
SCANDIR(R)          Linux Programmer's Manual          SCANDIR(R)



NAME
       scandir,  alphasort,  versionsort  -  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 void *a, const void *b);
       int versionsort(const void *a, const void *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() and versionsort() functions can be used as
       the comparison function compar().  The former sorts direc-
       tory entries using strcoll(l), the latter  using  strvers-
       cmp(p) on the strings (*a)->d_name and (*b)->d_name.

RETURN VALUE
       The  scandir()  function  returns  the number of directory
       entries selected or -1 if an error occurs.

       The alphasort()  and  versionsort()  functions  return  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
       None  of these functions is in POSIX.  The functions scan-
       dir() and alphasort() are from  BSD  4.3,  and  have  been
       available  under  Linux  since libc4.  Libc4 and libc5 use
       the more precise prototype

       int alphasort(const struct dirent **a, const struct dirent **b);

       but glibc 2.0 returns to the imprecise BSD prototype.

       The function versionsort() is a GNU  extension,  available
       since  glibc 2.1.  Since glibc 2.1, alphasort() calls str-
       coll(l); earlier it used strcmp(p).

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);
                   free(namelist[n]);
               }
               free(e);
           }
       }

SEE ALSO
       closedir(r), fnmatch(h), opendir(r),  readdir(r),  rewind-
       dir(r),  seekdir(r), strcmp(p), strcoll(l), strverscmp(p),
       telldir(r)



GNU                         2001-12-26                 SCANDIR(R)