+static int attr_subst_subdir(char *attr, size_t len)
+{
+ char *pos;
+ int found = 0;
+
+ pos = strstr(attr, "/*/");
+ if (pos != NULL) {
+ char str[PATH_SIZE];
+ DIR *dir;
+
+ pos[1] = '\0';
+ strlcpy(str, &pos[2], sizeof(str));
+ dir = opendir(attr);
+ if (dir != NULL) {
+ struct dirent *dent;
+
+ for (dent = readdir(dir); dent != NULL; dent = readdir(dir)) {
+ struct stat stats;
+
+ if (dent->d_name[0] == '.')
+ continue;
+ strlcat(attr, dent->d_name, len);
+ strlcat(attr, str, len);
+ if (stat(attr, &stats) == 0) {
+ found = 1;
+ break;
+ }
+ pos[1] = '\0';
+ }
+ closedir(dir);
+ }
+ if (!found)
+ strlcat(attr, str, len);
+ }
+
+ return found;
+}
+