#include <dlfcn.h>
#include <dirent.h>
#include <unistd.h>
+#include <stdio.h>
+#include <errno.h>
#include <common/extension.h>
return -1;
}
- DIR * dir;
- struct dirent ent = {0};
- struct dirent* result = nullptr;
- if ((dir = opendir(tec_path.c_str())) != NULL) {
- while ((0 == (readdir_r(dir, &ent, &result))) && result) {
- std::string fname = ent.d_name;
+ struct dirent** namelist;
+ int num_entries = scandir(tec_path.c_str(), &namelist, NULL, alphasort);
+ if( num_entries >= 0 ) {
+ for( int i = 0; i < num_entries; ++i ) {
+ std::string fname = namelist[i]->d_name;
if (fname.size() >= prefix_.size() + postfix_.size() &&
!fname.compare(0, prefix_.size(), prefix_) &&
//
// dlclose(handle);
}
+ free(namelist[i]);
}
- closedir(dir);
-
+ free(namelist);
print_json();
} else {
- std::cerr << "path not exist : " << tec_path << std::endl;
+ perror("scandir");
+ if( errno == ENOENT )
+ std::cerr << "path not exist : " << tec_path << std::endl;
return -1;
}