diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2021-11-23 15:55:45 +0100 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2022-01-11 20:12:40 +0100 |
commit | 89395b63f04f1acc0db533c32637ea20379f97c0 (patch) | |
tree | 6f0272e898d74ec86c2597a79122c5fca8950916 | |
parent | 7563de501246dccf5a9ea229933481aa1e7bd5c9 (diff) | |
download | systemd-89395b63f04f1acc0db533c32637ea20379f97c0.tar.gz |
shared/rm_rf: refactor rm_rf_children_inner() to shorten code a bit
(cherry picked from commit 3bac86abfa1b1720180840ffb9d06b3d54841c11)
(cherry picked from commit 47741ff9eae6311a03e4d3d837128191826a4a3a)
-rw-r--r-- | src/shared/rm-rf.c | 27 |
1 files changed, 9 insertions, 18 deletions
diff --git a/src/shared/rm-rf.c b/src/shared/rm-rf.c index 19f37e0f19..7362954116 100644 --- a/src/shared/rm-rf.c +++ b/src/shared/rm-rf.c @@ -124,7 +124,7 @@ static int rm_rf_children_inner( const struct stat *root_dev) { struct stat st; - int r; + int r, q = 0; assert(fd >= 0); assert(fname); @@ -142,7 +142,6 @@ static int rm_rf_children_inner( if (is_dir) { _cleanup_close_ int subdir_fd = -1; - int q; /* if root_dev is set, remove subdirectories only if device is same */ if (root_dev && st.st_dev != root_dev->st_dev) @@ -178,23 +177,15 @@ static int rm_rf_children_inner( * again for each directory */ q = rm_rf_children(TAKE_FD(subdir_fd), flags | REMOVE_PHYSICAL, root_dev); - r = unlinkat_harder(fd, fname, AT_REMOVEDIR, flags); - if (r < 0) - return r; - if (q < 0) - return q; - - return 1; - - } else if (!(flags & REMOVE_ONLY_DIRECTORIES)) { - r = unlinkat_harder(fd, fname, 0, flags); - if (r < 0) - return r; - - return 1; - } + } else if (flags & REMOVE_ONLY_DIRECTORIES) + return 0; - return 0; + r = unlinkat_harder(fd, fname, is_dir ? AT_REMOVEDIR : 0, flags); + if (r < 0) + return r; + if (q < 0) + return q; + return 1; } int rm_rf_children( |