--- /dev/null
+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);
+