qcache: work around missing d_type/DT_DIR --- qcache.c +++ qcache.c @@ -750,13 +750,21 @@ xasprintf(&catpath, "%s/dep/%s", portedb, data->overlay); dir = opendir(catpath); - while ((de = readdir(dir))) + while ((de = readdir(dir))) { +#ifndef DT_DIR + struct stat s; + if (stat(de->d_name, &s)) + continue; + if (S_ISDIR(s.st_mode) && de->d_name[0] != '.') { +#else if (de->d_type == DT_DIR && de->d_name[0] != '.') { +#endif bool ok; allcats = add_set_unique(de->d_name, allcats, &ok); if (ok) ++numcat; } + } closedir(dir); free(catpath);