summary refs log tree commit diff
path: root/gnu/packages/patches/ola-readdir-r.patch
blob: b4bd98137eb526b24c2780fa293dd219e87a817d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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;
     }