{
const string event_prefix = "event";
DIR *dir = NULL;
- struct dirent *dir_entry = NULL;
- string node_name;
+ struct dirent dir_entry;
+ struct dirent *result;
+ std::string node_name;
+ int error;
bool find = false;
dir = opendir(input_path.c_str());
int prefix_size = event_prefix.size();
- while (!find && (dir_entry = readdir(dir))) {
- node_name = dir_entry->d_name;
+ while (true) {
+ error = readdir_r(dir, &dir_entry, &result);
+
+ if (error != 0)
+ continue;
+
+ if (result == NULL)
+ break;
+
+ node_name = std::string(dir_entry.d_name);
if (node_name.compare(0, prefix_size, event_prefix) == 0) {
event_num = node_name.substr(prefix_size, node_name.size() - prefix_size);
const int input_info_len = sizeof(input_info)/sizeof(input_info[0]);
size_t prefix_size;
- string name_node, name;
- string d_name;
+ std::string name_node, name;
+ std::string d_name;
DIR *dir = NULL;
- struct dirent *dir_entry = NULL;
+ struct dirent dir_entry;
+ struct dirent *result;
+ int error;
bool find = false;
for (int i = 0; i < input_info_len; ++i) {
find = false;
- while (!find && (dir_entry = readdir(dir))) {
- d_name = string(dir_entry->d_name);
+ while (true) {
+ error = readdir_r(dir, &dir_entry, &result);
+
+ if (error != 0)
+ continue;
+
+ if (result == NULL)
+ break;
+
+ d_name = std::string(dir_entry.d_name);
if (d_name.compare(0, prefix_size, input_info[i].prefix) == 0) {
name_node = input_info[i].dir_path + d_name + string("/name");