X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Flibrte_eal%2Fcommon%2Feal_common_options.c;h=29942ea6e24d7dcab2931fc0b358045a14fd231d;hb=6a34f91690d0;hp=bed738570064b5960708afa9d47f901a5271c378;hpb=9f8eb1d9ca0f56d6292db5858c52e6873d0abe51;p=dpdk.git diff --git a/lib/librte_eal/common/eal_common_options.c b/lib/librte_eal/common/eal_common_options.c index bed7385700..29942ea6e2 100644 --- a/lib/librte_eal/common/eal_common_options.c +++ b/lib/librte_eal/common/eal_common_options.c @@ -191,12 +191,14 @@ eal_plugindir_init(const char *path) } 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; } @@ -216,22 +218,15 @@ eal_plugins_init(void) 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); @@ -239,7 +234,6 @@ eal_plugins_init(void) RTE_LOG(ERR, EAL, "%s\n", dlerror()); return -1; } - break; } }