]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
fd-util: add new helper close_many_unset()
authorLennart Poettering <lennart@poettering.net>
Wed, 18 Oct 2023 12:03:36 +0000 (14:03 +0200)
committerLennart Poettering <lennart@poettering.net>
Wed, 18 Oct 2023 12:03:36 +0000 (14:03 +0200)
src/basic/fd-util.c
src/basic/fd-util.h
src/core/execute.c

index 33c4a057adf5696dca4e029bc4a8d41abbac16bd..5fdbf8f26937363a0922112635accbbcef12c3a7 100644 (file)
@@ -99,6 +99,13 @@ void close_many(const int fds[], size_t n_fd) {
                 safe_close(fds[i]);
 }
 
+void close_many_unset(int fds[], size_t n_fd) {
+        assert(fds || n_fd <= 0);
+
+        for (size_t i = 0; i < n_fd; i++)
+                fds[i] = safe_close(fds[i]);
+}
+
 void close_many_and_free(int *fds, size_t n_fds) {
         assert(fds || n_fds <= 0);
 
index 1f5ed828b7bef1f2c61b034fec96832a15ebd4e3..b2efdc9c2347e8b2f01bfb071cbb6f3dc2428a43 100644 (file)
@@ -30,6 +30,7 @@ static inline int safe_close_above_stdio(int fd) {
 }
 
 void close_many(const int fds[], size_t n_fd);
+void close_many_unset(int fds[], size_t n_fd);
 void close_many_and_free(int *fds, size_t n_fds);
 
 int fclose_nointr(FILE *f);
index ce947a7a52f96f4c67c72115512d7b3e1570af1e..46fb8805b3aa856d3a33aca0f15352841f9d88c4 100644 (file)
@@ -2251,8 +2251,7 @@ void exec_params_serialized_done(ExecParameters *p) {
         if (!p)
                 return;
 
-        for (size_t i = 0; p->fds && i < p->n_socket_fds + p->n_storage_fds; i++)
-                p->fds[i] = safe_close(p->fds[i]);
+        close_many_unset(p->fds, p->n_socket_fds + p->n_storage_fds);
 
         p->cgroup_path = mfree(p->cgroup_path);