if (!dir)
return -errno;
- struct dirent *de;
- while ((de = ::readdir(dir)) != 0) {
+ struct dirent sde, *de;
+ while (::readdir_r(dir, &sde, &de) == 0) {
+ if (!de)
+ break;
coll_t c;
if (parse_coll(de->d_name, c))
ls.push_back(c);
return -errno;
bool empty = true;
- struct dirent *de;
- while ((de = ::readdir(dir)) != 0) {
+ struct dirent sde, *de;
+ while (::readdir_r(dir, &sde, &de) == 0) {
+ if (!de)
+ break;
// parse
if (de->d_name[0] == '.') continue;
//cout << " got object " << de->d_name << std::endl;
get_cdir(c, fn);
DIR *dir = NULL;
- struct dirent *de;
+ struct dirent sde, *de;
bool end;
dir = ::opendir(fn);
while (i < max_count) {
errno = 0;
end = false;
- de = ::readdir(dir);
+ ::readdir_r(dir, &sde, &de);
if (!de && errno) {
dout(0) << "error reading directory " << fn << dendl;
return -errno;
// first, build (ino, object) list
vector< pair<ino_t,sobject_t> > inolist;
- struct dirent *de;
- while ((de = ::readdir(dir)) != 0) {
+ struct dirent sde, *de;
+ while (::readdir_r(dir, &sde, &de) == 0) {
+ if (!de)
+ break;
// parse
- if (de->d_name[0] == '.') continue;
+ if (de->d_name[0] == '.')
+ continue;
//cout << " got object " << de->d_name << std::endl;
sobject_t o;
if (parse_object(de->d_name, o)) {