Fix build failure caused by use of the deprecated readdir_r(3) while building with -Werror=deprecated-declarations Patch copied from upstream source repository: https://github.com/daveol/ola/commit/9d8575ff38f76df698ea8889e07a3dee8f21bd68 From 9d8575ff38f76df698ea8889e07a3dee8f21bd68 Mon Sep 17 00:00:00 2001 From: Dave Olsthoorn Date: Wed, 2 Mar 2016 11:22:17 +0100 Subject: [PATCH] Use readdir instead of readdir_r This replacec the use of readdir_r with readdir since readdir seems to be both dangarous and deprecated in newer versions of glibc. This fixes #1055 --- common/file/Util.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/common/file/Util.cpp b/common/file/Util.cpp index e2261fd..0ffddd3 100644 --- a/common/file/Util.cpp +++ b/common/file/Util.cpp @@ -128,30 +128,29 @@ bool FindMatchingFiles(const string &directory, FindClose(h_find); #else DIR *dp; - struct dirent dir_ent; - struct dirent *dir_ent_p; + struct dirent *dir_ent; if ((dp = opendir(directory.data())) == NULL) { OLA_WARN << "Could not open " << directory << ":" << strerror(errno); return false; } - if (readdir_r(dp, &dir_ent, &dir_ent_p)) { - OLA_WARN << "readdir_r(" << directory << "): " << strerror(errno); + if ((dir_ent = readdir(dp)) == NULL) { + OLA_WARN << "readdir(" << directory << "): " << strerror(errno); closedir(dp); return false; } - while (dir_ent_p != NULL) { + while (dir_ent != NULL) { vector::const_iterator iter; for (iter = prefixes.begin(); iter != prefixes.end(); ++iter) { - if (!strncmp(dir_ent_p->d_name, iter->data(), iter->size())) { + if (!strncmp(dir_ent->d_name, iter->data(), iter->size())) { std::ostringstream str; - str << directory << PATH_SEPARATOR << dir_ent_p->d_name; + str << directory << PATH_SEPARATOR << dir_ent->d_name; files->push_back(str.str()); } } - if (readdir_r(dp, &dir_ent, &dir_ent_p)) { - OLA_WARN << "readdir_r(" << directory << "): " << strerror(errno); + if ((dir_ent = readdir(dp)) == NULL) { + OLA_WARN << "readdir(" << directory << "): " << strerror(errno); closedir(dp); return false; }