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