diff options
author | José Bollo <jose.bollo@iot.bzh> | 2017-01-05 17:09:55 +0100 |
---|---|---|
committer | José Bollo <jose.bollo@iot.bzh> | 2017-01-05 17:11:36 +0100 |
commit | c07d1ea01ae008dc5aa379932b1d2da90d7d291c (patch) | |
tree | 5d806e4cb7112597992bd9f1ee126fde3ff02f86 | |
parent | 3a6e947bef1b2942e24d2fdee1a76dbf3305b508 (diff) |
Remove use of deprecated readdir_r
Change-Id: I55bd335f1a731e3a02fdb598c8bd869686269aab
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
-rw-r--r-- | src/afm-db.c | 20 | ||||
-rw-r--r-- | 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; |