}
while ((dent = readdir(d)) != NULL) {
- if (dent->d_type != DT_REG && dent->d_type != DT_LNK)
- continue;
+ struct stat sb;
snprintf(sopath, PATH_MAX-1, "%s/%s", path, dent->d_name);
sopath[PATH_MAX-1] = 0;
+ if (!(stat(sopath, &sb) == 0 && S_ISREG(sb.st_mode)))
+ continue;
+
if (eal_plugin_add(sopath) == -1)
break;
}
TAILQ_FOREACH(solib, &solib_list, next) {
struct stat sb;
- if (stat(solib->name, &sb) == -1) {
- RTE_LOG(ERR, EAL, "Invalid plugin specified: %s: %s\n",
- solib->name, strerror(errno));
- return -1;
- }
- switch (sb.st_mode & S_IFMT) {
- case S_IFDIR:
+ if (stat(solib->name, &sb) == 0 && S_ISDIR(sb.st_mode)) {
if (eal_plugindir_init(solib->name) == -1) {
RTE_LOG(ERR, EAL,
"Cannot init plugin directory %s\n",
solib->name);
return -1;
}
- break;
- case S_IFREG:
+ } else {
RTE_LOG(DEBUG, EAL, "open shared lib %s\n",
solib->name);
solib->lib_handle = dlopen(solib->name, RTLD_NOW);
RTE_LOG(ERR, EAL, "%s\n", dlerror());
return -1;
}
- break;
}
}