X-Git-Url: https://git.tokkee.org/?p=sysdb.git;a=blobdiff_plain;f=src%2Futils%2Fos.c;fp=src%2Futils%2Fos.c;h=70142f7ba8d6ab093bf907e38e47cc8e8ae30159;hp=8ab52c75bc023c2bc5b68ca61d2cc0f13ce0f916;hb=2d74729ad602709cae9f48c96c2810ee0c5e340b;hpb=6856fc4a03dfa294144277d853277e5cce97e0ad diff --git a/src/utils/os.c b/src/utils/os.c index 8ab52c7..70142f7 100644 --- a/src/utils/os.c +++ b/src/utils/os.c @@ -172,26 +172,25 @@ sdb_remove_all(const char *pathname) return -1; while (42) { - struct dirent de; - struct dirent *res = NULL; + struct dirent *de; + char filename[strlen(pathname) + sizeof(de->d_name) + 2]; - char filename[strlen(pathname) + sizeof(de.d_name) + 2]; + errno = 0; + de = readdir(d); + if (! de) { + if (errno == 0) + break; - memset(&de, 0, sizeof(de)); - if (readdir_r(d, &de, &res)) { closedir(d); return -1; } - if (! res) - break; - - if ((de.d_name[0] == '.') && ((de.d_name[1] == '\0') - || ((de.d_name[1] == '.')&& (de.d_name[2] == '\0')))) + if ((de->d_name[0] == '.') && ((de->d_name[1] == '\0') + || ((de->d_name[1] == '.')&& (de->d_name[2] == '\0')))) continue; snprintf(filename, sizeof(filename), - "%s/%s", pathname, de.d_name); + "%s/%s", pathname, de->d_name); if (sdb_remove_all(filename)) { closedir(d); return -1;