summary refs log tree commit diff
path: root/gnu/packages/patches/ola-readdir-r.patch
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/patches/ola-readdir-r.patch')
-rw-r--r--gnu/packages/patches/ola-readdir-r.patch62
1 files changed, 62 insertions, 0 deletions
diff --git a/gnu/packages/patches/ola-readdir-r.patch b/gnu/packages/patches/ola-readdir-r.patch
new file mode 100644
index 0000000000..b4bd98137e
--- /dev/null
+++ b/gnu/packages/patches/ola-readdir-r.patch
@@ -0,0 +1,62 @@
+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 <dave.olsthoorn@gmail.com>
+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<string>::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;
+     }