52 if (dirlist->
path) free(dirlist->
path);
56 for (fi = 0; fi < dirlist->
nfiles; fi++) {
98 "Could not create directory list for: %s\n",
99 " -> memory allocation error\n", path);
104 dirlist->
flags = flags;
106 dirlist->
path = strdup(path);
108 if (!dirlist->
path) {
111 "Could not create directory list for: %s\n",
112 " -> memory allocation error\n", path);
127 "Could not create directory list for: %s\n",
128 " -> memory allocation error\n", path);
155 const char **patterns,
161 if (!npatterns || !patterns) {
165 cflags = REG_EXTENDED | REG_NOSUB;
172 dirlist->
patterns, npatterns, patterns, cflags);
177 "Could not add file patterns for directory: %s\n",
178 " -> regular expression error\n",
185 dirlist->
stats.st_mtime = 0;
212 struct stat dir_stats;
214 struct dirent *direntp;
222 *file_list = (
char **)NULL;
226 if (access(dirlist->
path, F_OK) != 0) {
228 if (errno == ENOENT) {
234 "Could not access directory: %s\n",
235 " -> %s\n", dirlist->
path, strerror(errno));
243 if (stat(dirlist->
path, &dir_stats) != 0 ) {
246 "Could not stat directory: %s\n",
247 " -> %s\n", dirlist->
path, strerror(errno));
252 if (dirlist->
stats.st_mtime == dir_stats.st_mtime) {
253 dirlist->
stats = dir_stats;
260 for (fi = 0; fi < dirlist->
nfiles; fi++) {
269 dirp = opendir(dirlist->
path);
273 "Could not open directory: %s\n",
274 " -> %s\n", dirlist->
path, strerror(errno));
288 if (!(direntp = readdir(dirp))) {
293 "Could not read directory: %s\n",
294 " -> %s\n", dirlist->
path, strerror(errno));
306 if (direntp->d_name[0] ==
'.') {
312 if ((direntp->d_name[1] ==
'\0') ||
313 (direntp->d_name[1] ==
'.' && direntp->d_name[2] ==
'\0')) {
324 dirlist->
patterns, direntp->d_name, 0, NULL, NULL, NULL, NULL);
333 "Could not get file list for directory: %s\n",
334 " -> regular expression error\n",
347 new_list = (
char **)realloc(
348 dirlist->
file_list, new_size *
sizeof(
char *));
353 "Could not get file list for directory: %s\n",
354 " -> memory allocation error\n",
364 for (fi = dirlist->
nfiles; fi < dirlist->nalloced; fi++) {
376 "Could not get file list for directory: %s\n",
377 " -> memory allocation error\n",
389 dirlist->
stats = dir_stats;
423 int (*qsort_compare)(
const void *,
const void *))
426 dirlist->
stats.st_mtime = 0;