chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
tree-wide: replace all readdir cycles with FOREACH_DIRENT{,_ALL} (#4853)
[elogind.git]
/
src
/
basic
/
rm-rf.c
diff --git
a/src/basic/rm-rf.c
b/src/basic/rm-rf.c
index 78de895d35d7188aebd699f632ceaa088d735fbb..a9035919471e1d241b6b61c07288486c448c1792 100644
(file)
--- a/
src/basic/rm-rf.c
+++ b/
src/basic/rm-rf.c
@@
-17,7
+17,6
@@
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
-#include <dirent.h>
#include <errno.h>
#include <fcntl.h>
#include <stdbool.h>
#include <errno.h>
#include <fcntl.h>
#include <stdbool.h>
@@
-43,6
+42,7
@@
static bool is_physical_fs(const struct statfs *sfs) {
int rm_rf_children(int fd, RemoveFlags flags, struct stat *root_dev) {
_cleanup_closedir_ DIR *d = NULL;
int rm_rf_children(int fd, RemoveFlags flags, struct stat *root_dev) {
_cleanup_closedir_ DIR *d = NULL;
+ struct dirent *de;
int ret = 0, r;
struct statfs sfs;
int ret = 0, r;
struct statfs sfs;
@@
-78,19
+78,10
@@
int rm_rf_children(int fd, RemoveFlags flags, struct stat *root_dev) {
return errno == ENOENT ? 0 : -errno;
}
return errno == ENOENT ? 0 : -errno;
}
- for (;;) {
- struct dirent *de;
+ FOREACH_DIRENT_ALL(de, d, return -errno) {
bool is_dir;
struct stat st;
bool is_dir;
struct stat st;
- errno = 0;
- de = readdir(d);
- if (!de) {
- if (errno > 0 && ret == 0)
- ret = -errno;
- return ret;
- }
-
if (streq(de->d_name, ".") || streq(de->d_name, ".."))
continue;
if (streq(de->d_name, ".") || streq(de->d_name, ".."))
continue;
@@
-180,6
+171,7
@@
int rm_rf_children(int fd, RemoveFlags flags, struct stat *root_dev) {
}
}
}
}
}
}
+ return ret;
}
int rm_rf(const char *path, RemoveFlags flags) {
}
int rm_rf(const char *path, RemoveFlags flags) {