From 99b799630a456e8650cae27f994ad7060748fdb2 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Mon, 12 Sep 2016 11:56:09 +0800 Subject: [PATCH] ceph_mon: use readdir() as readdir_r() is deprecated see https://lwn.net/Articles/696469/, readdir_r() is deprecated by glibc since 2.24. so let's use readdir() instead. Signed-off-by: Kefu Chai --- src/ceph_mon.cc | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/src/ceph_mon.cc b/src/ceph_mon.cc index 68b6e371e6946..5755827f3ad14 100644 --- a/src/ceph_mon.cc +++ b/src/ceph_mon.cc @@ -137,25 +137,20 @@ int check_mon_data_empty() cerr << "opendir(" << mon_data << ") " << cpp_strerror(errno) << std::endl; return -errno; } - char buf[offsetof(struct dirent, d_name) + PATH_MAX + 1]; - int code = 0; - struct dirent *de; + struct dirent *de = nullptr; errno = 0; - while (!::readdir_r(dir, reinterpret_cast(buf), &de)) { - if (!de) { - if (errno) { - cerr << "readdir(" << mon_data << ") " << cpp_strerror(errno) << std::endl; - code = -errno; - } - break; - } + while ((de = ::readdir(dir))) { if (string(".") != de->d_name && string("..") != de->d_name) { code = -ENOTEMPTY; break; } } + if (!de && errno) { + cerr << "readdir(" << mon_data << ") " << cpp_strerror(errno) << std::endl; + code = -errno; + } ::closedir(dir); -- 2.39.5