From c07d1ea01ae008dc5aa379932b1d2da90d7d291c Mon Sep 17 00:00:00 2001
From: =?utf8?q?Jos=C3=A9=20Bollo?= <jose.bollo@iot.bzh>
Date: Thu, 5 Jan 2017 17:09:55 +0100
Subject: [PATCH] Remove use of deprecated readdir_r
MIME-Version: 1.0
Content-Type: text/plain; charset=utf8
Content-Transfer-Encoding: 8bit

Change-Id: I55bd335f1a731e3a02fdb598c8bd869686269aab
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
---
 src/afm-db.c    | 20 ++++++++++++--------
 src/utils-dir.c | 13 ++++++-------
 2 files changed, 18 insertions(+), 15 deletions(-)

diff --git a/src/afm-db.c b/src/afm-db.c
index 638713e..a15255b 100644
--- a/src/afm-db.c
+++ b/src/afm-db.c
@@ -231,7 +231,7 @@ static int enumentries(struct enumdata *data, int (*callto)(struct enumdata *))
 	DIR *dir;
 	int rc;
 	char *beg;
-	struct dirent entry, *e;
+	struct dirent *e;
 	size_t len;
 
 	/* opens the directory */
@@ -244,24 +244,28 @@ static int enumentries(struct enumdata *data, int (*callto)(struct enumdata *))
 	*beg++ = '/';
 
 	/* enumerate entries */
-	rc = readdir_r(dir, &entry, &e);
-	while (!rc && e) {
-		if (entry.d_name[0] != '.' || (entry.d_name[1]
-			&& (entry.d_name[1] != '.' || entry.d_name[2]))) {
+	for(;;) {
+		errno = 0;
+		e = readdir(dir);
+		if (!e) {
+			rc = !errno - 1;
+			break;
+		}
+		if (e->d_name[0] != '.' || (e->d_name[1]
+			&& (e->d_name[1] != '.' || e->d_name[2]))) {
 			/* prepare callto */
-			len = strlen(entry.d_name);
+			len = strlen(e->d_name);
 			if (beg + len >= data->path + sizeof data->path) {
 				errno = ENAMETOOLONG;
 				return -1;
 			}
-			data->length = (int)(stpcpy(beg, entry.d_name)
+			data->length = (int)(stpcpy(beg, e->d_name)
 								- data->path);
 			/* call the function */
 			rc = callto(data);
 			if (rc)
 				break;
 		}	
-		rc = readdir_r(dir, &entry, &e);
 	}
 	closedir(dir);
 	return rc;
diff --git a/src/utils-dir.c b/src/utils-dir.c
index aef0a65..3c934fc 100644
--- a/src/utils-dir.c
+++ b/src/utils-dir.c
@@ -33,10 +33,6 @@ static int clean_dirfd(int dirfd)
 	int rc;
 	DIR *dir;
 	struct dirent *ent;
-	struct {
-		struct dirent entry;
-		char spare[PATH_MAX];
-	} entry;
 
 	dir = fdopendir(dirfd);
 	if (dir == NULL) {
@@ -45,10 +41,13 @@ static int clean_dirfd(int dirfd)
 	}
 	for (;;) {
 		rc = -1;
-		if (readdir_r(dir, &entry.entry, &ent) != 0)
-			goto error;
-		if (ent == NULL)
+		errno = 0;
+		ent = readdir(dir);
+		if (ent == NULL) {
+			if (errno)
+				goto error;
 			break;
+		}
 		if (ent->d_name[0] == '.' && (ent->d_name[1] == 0
 				|| (ent->d_name[1] == '.' && ent->d_name[2] == 0)))
 			continue;
-- 
2.16.6