X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Futils%2Fos.c;h=70142f7ba8d6ab093bf907e38e47cc8e8ae30159;hb=aa416a57d8b302fce242fcb5e73c97531536899f;hp=2b6a51460a67f89122dbee5ec7d75d70e2b3fe82;hpb=f57b23c4059c67c4c2c7ab1b06c02c000bcf7250;p=sysdb.git diff --git a/src/utils/os.c b/src/utils/os.c index 2b6a514..70142f7 100644 --- a/src/utils/os.c +++ b/src/utils/os.c @@ -35,8 +35,11 @@ #include #include +#include #include #include +#include +#include #include @@ -48,6 +51,7 @@ #include #include #include +#include /* * public API @@ -168,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;