diff options
author | Lennart Poettering <lennart@poettering.net> | 2019-04-29 16:21:01 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2019-04-29 16:21:01 +0200 |
commit | 50b6eec15435ee76855d841f43ee1e1dcb850ef4 (patch) | |
tree | db286ee641a13f45c8dcc3e0454e2a2b21b12f32 /src/basic/rm-rf.c | |
parent | switch-root: modernize rm_rf_children() invocation a bit (diff) | |
download | systemd-50b6eec15435ee76855d841f43ee1e1dcb850ef4.tar.xz systemd-50b6eec15435ee76855d841f43ee1e1dcb850ef4.zip |
rm-rf: simplify rm_rf_children() a bit by using _cleanup_close_
Diffstat (limited to 'src/basic/rm-rf.c')
-rw-r--r-- | src/basic/rm-rf.c | 21 |
1 files changed, 6 insertions, 15 deletions
diff --git a/src/basic/rm-rf.c b/src/basic/rm-rf.c index 3843fc36fc..b751933c83 100644 --- a/src/basic/rm-rf.c +++ b/src/basic/rm-rf.c @@ -85,7 +85,7 @@ int rm_rf_children(int fd, RemoveFlags flags, struct stat *root_dev) { is_dir = de->d_type == DT_DIR; if (is_dir) { - int subdir_fd; + _cleanup_close_ int subdir_fd = -1; /* if root_dev is set, remove subdirectories only if device is same */ if (root_dev && st.st_dev != root_dev->st_dev) @@ -104,13 +104,10 @@ int rm_rf_children(int fd, RemoveFlags flags, struct stat *root_dev) { if (ret == 0 && r != -ENOENT) ret = r; - safe_close(subdir_fd); continue; } - if (r) { - safe_close(subdir_fd); + if (r > 0) continue; - } if ((flags & REMOVE_SUBVOLUME) && st.st_ino == 256) { @@ -122,24 +119,18 @@ int rm_rf_children(int fd, RemoveFlags flags, struct stat *root_dev) { if (ret == 0) ret = r; - safe_close(subdir_fd); continue; } - /* ENOTTY, then it wasn't a - * btrfs subvolume, continue - * below. */ - } else { + /* ENOTTY, then it wasn't a btrfs subvolume, continue below. */ + } else /* It was a subvolume, continue. */ - safe_close(subdir_fd); continue; - } } - /* We pass REMOVE_PHYSICAL here, to avoid - * doing the fstatfs() to check the file + /* We pass REMOVE_PHYSICAL here, to avoid doing the fstatfs() to check the file * system type again for each directory */ - r = rm_rf_children(subdir_fd, flags | REMOVE_PHYSICAL, root_dev); + r = rm_rf_children(TAKE_FD(subdir_fd), flags | REMOVE_PHYSICAL, root_dev); if (r < 0 && ret == 0) ret = r; |