aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Yuan <me@yhndnzj.com>2024-04-19 01:40:33 +0800
committerGitHub <noreply@github.com>2024-04-19 01:40:33 +0800
commit1ac8747da998596b4500ac93efc52f676684dedb (patch)
treeeda1c485ca717cc89df7303a0cedfb3076454683
parentMerge pull request #32144 from bluca/portable_clean (diff)
parentuse FOREACH_ELEMENT (diff)
downloadsystemd-1ac8747da998596b4500ac93efc52f676684dedb.tar.xz
systemd-1ac8747da998596b4500ac93efc52f676684dedb.zip
Merge pull request #32336 from teknoraver/foreach_element
Foreach element
-rw-r--r--coccinelle/parsing_hacks.h1
-rw-r--r--src/analyze/analyze-security.c2
-rw-r--r--src/analyze/analyze-time-data.c2
-rw-r--r--src/analyze/analyze-verify-util.c4
-rw-r--r--src/basic/macro.h3
-rw-r--r--src/core/cgroup.c10
-rw-r--r--src/core/exec-invoke.c2
-rw-r--r--src/core/kmod-setup.c2
-rw-r--r--src/core/transaction.c2
-rw-r--r--src/getty-generator/getty-generator.c2
-rw-r--r--src/login/logind-action.c4
-rw-r--r--src/login/logind-user.c2
-rw-r--r--src/pcrlock/pcrlock.c2
-rw-r--r--src/shared/bus-wait-for-jobs.c2
-rw-r--r--src/shared/compare-operator.c2
-rw-r--r--src/shared/dev-setup.c2
-rw-r--r--src/shared/mount-setup.c4
-rw-r--r--src/shared/sleep-config.c2
-rw-r--r--src/shared/switch-root.c2
-rw-r--r--src/shared/tpm2-util.c4
-rw-r--r--src/shared/varlink.c2
-rw-r--r--src/test/test-creds.c2
-rw-r--r--src/test/test-mount-util.c4
-rw-r--r--src/test/test-openssl.c2
-rw-r--r--src/test/test-stat-util.c2
-rw-r--r--src/test/test-tpm2.c2
-rw-r--r--src/update-utmp/update-utmp.c2
-rw-r--r--src/userdb/userdbctl.c4
28 files changed, 40 insertions, 36 deletions
diff --git a/coccinelle/parsing_hacks.h b/coccinelle/parsing_hacks.h
index 9e77e514dd0..f88dae0c86b 100644
--- a/coccinelle/parsing_hacks.h
+++ b/coccinelle/parsing_hacks.h
@@ -68,6 +68,7 @@
/* Mark a couple of iterator explicitly as iterators, otherwise Coccinelle gets a bit confused. Coccinelle
* can usually infer this information automagically, but in these specific cases it needs a bit of help. */
#define FOREACH_ARRAY(i, array, num) YACFE_ITERATOR
+#define FOREACH_ELEMENT(i, array) YACFE_ITERATOR
#define FOREACH_DIRENT_ALL(de, d, on_error) YACFE_ITERATOR
#define FOREACH_STRING(x, y, ...) YACFE_ITERATOR
#define HASHMAP_FOREACH(e, h) YACFE_ITERATOR
diff --git a/src/analyze/analyze-security.c b/src/analyze/analyze-security.c
index 486143b7f06..668475d1f57 100644
--- a/src/analyze/analyze-security.c
+++ b/src/analyze/analyze-security.c
@@ -1756,7 +1756,7 @@ static int assess(const SecurityInfo *info,
(void) table_set_display(details_table, (size_t) 0, (size_t) 1, (size_t) 2, (size_t) 3, (size_t) 7);
}
- FOREACH_ARRAY(a, security_assessor_table, ELEMENTSOF(security_assessor_table)) {
+ FOREACH_ELEMENT(a, security_assessor_table) {
_cleanup_free_ char *d = NULL;
uint64_t badness;
void *data;
diff --git a/src/analyze/analyze-time-data.c b/src/analyze/analyze-time-data.c
index 62e055dda4d..1a2699166f3 100644
--- a/src/analyze/analyze-time-data.c
+++ b/src/analyze/analyze-time-data.c
@@ -249,7 +249,7 @@ void unit_times_clear(UnitTimes *t) {
if (!t)
return;
- FOREACH_ARRAY(d, t->deps, ELEMENTSOF(t->deps))
+ FOREACH_ELEMENT(d, t->deps)
*d = strv_free(*d);
t->name = mfree(t->name);
diff --git a/src/analyze/analyze-verify-util.c b/src/analyze/analyze-verify-util.c
index 3e5adcab2ef..8e83c9a589b 100644
--- a/src/analyze/analyze-verify-util.c
+++ b/src/analyze/analyze-verify-util.c
@@ -202,12 +202,12 @@ static int verify_executables(Unit *u, const char *root) {
assert(u);
if (u->type == UNIT_SERVICE)
- FOREACH_ARRAY(i, SERVICE(u)->exec_command, ELEMENTSOF(SERVICE(u)->exec_command))
+ FOREACH_ELEMENT(i, SERVICE(u)->exec_command)
LIST_FOREACH(command, j, *i)
RET_GATHER(r, verify_executable(u, j, root));
if (u->type == UNIT_SOCKET)
- FOREACH_ARRAY(i, SOCKET(u)->exec_command, ELEMENTSOF(SOCKET(u)->exec_command))
+ FOREACH_ELEMENT(i, SOCKET(u)->exec_command)
LIST_FOREACH(command, j, *i)
RET_GATHER(r, verify_executable(u, j, root));
diff --git a/src/basic/macro.h b/src/basic/macro.h
index d43c3cdd5dd..19d5039fd3b 100644
--- a/src/basic/macro.h
+++ b/src/basic/macro.h
@@ -275,6 +275,9 @@ static inline int __coverity_check_and_return__(int condition) {
#define FOREACH_ARRAY(i, array, num) \
_FOREACH_ARRAY(i, array, num, UNIQ_T(m, UNIQ), UNIQ_T(end, UNIQ))
+#define FOREACH_ELEMENT(i, array) \
+ FOREACH_ARRAY(i, array, ELEMENTSOF(array))
+
#define _DEFINE_TRIVIAL_REF_FUNC(type, name, scope) \
scope type *name##_ref(type *p) { \
if (!p) \
diff --git a/src/core/cgroup.c b/src/core/cgroup.c
index 852a16622f1..47f028fbe07 100644
--- a/src/core/cgroup.c
+++ b/src/core/cgroup.c
@@ -4918,7 +4918,7 @@ void unit_reset_memory_accounting_last(Unit *u) {
if (!crt || !crt->cgroup_path)
return;
- FOREACH_ARRAY(i, crt->memory_accounting_last, ELEMENTSOF(crt->memory_accounting_last))
+ FOREACH_ELEMENT(i, crt->memory_accounting_last)
*i = UINT64_MAX;
}
@@ -5226,13 +5226,13 @@ CGroupRuntime *cgroup_runtime_new(void) {
.cgroup_invalidated_mask = _CGROUP_MASK_ALL,
};
- FOREACH_ARRAY(i, crt->memory_accounting_last, ELEMENTSOF(crt->memory_accounting_last))
+ FOREACH_ELEMENT(i, crt->memory_accounting_last)
*i = UINT64_MAX;
- FOREACH_ARRAY(i, crt->io_accounting_base, ELEMENTSOF(crt->io_accounting_base))
+ FOREACH_ELEMENT(i, crt->io_accounting_base)
*i = UINT64_MAX;
- FOREACH_ARRAY(i, crt->io_accounting_last, ELEMENTSOF(crt->io_accounting_last))
+ FOREACH_ELEMENT(i, crt->io_accounting_last)
*i = UINT64_MAX;
- FOREACH_ARRAY(i, crt->ip_accounting_extra, ELEMENTSOF(crt->ip_accounting_extra))
+ FOREACH_ELEMENT(i, crt->ip_accounting_extra)
*i = UINT64_MAX;
return TAKE_PTR(crt);
diff --git a/src/core/exec-invoke.c b/src/core/exec-invoke.c
index 90e11d0d1e9..32b48ececc0 100644
--- a/src/core/exec-invoke.c
+++ b/src/core/exec-invoke.c
@@ -3717,7 +3717,7 @@ static int connect_unix_harder(const ExecContext *c, const ExecParameters *p, co
return log_exec_error_errno(c, p, r, "Failed to set sockaddr for '%s': %m", of->path);
sa_len = r;
- FOREACH_ARRAY(i, socket_types, ELEMENTSOF(socket_types)) {
+ FOREACH_ELEMENT(i, socket_types) {
_cleanup_close_ int fd = -EBADF;
fd = socket(AF_UNIX, *i|SOCK_CLOEXEC, 0);
diff --git a/src/core/kmod-setup.c b/src/core/kmod-setup.c
index 3f8f7e3bca5..c39b136e046 100644
--- a/src/core/kmod-setup.c
+++ b/src/core/kmod-setup.c
@@ -157,7 +157,7 @@ int kmod_setup(void) {
return 0;
_cleanup_(sym_kmod_unrefp) struct kmod_ctx *ctx = NULL;
- FOREACH_ARRAY(kmod, kmod_table, ELEMENTSOF(kmod_table)) {
+ FOREACH_ELEMENT(kmod, kmod_table) {
if (kmod->path && access(kmod->path, F_OK) >= 0)
continue;
diff --git a/src/core/transaction.c b/src/core/transaction.c
index b5c6348b6fc..d70a44b23c8 100644
--- a/src/core/transaction.c
+++ b/src/core/transaction.c
@@ -446,7 +446,7 @@ static int transaction_verify_order_one(Transaction *tr, Job *j, Job *from, unsi
* the graph over 'before' edges in the actual job execution order. We traverse over both unit
* ordering dependencies and we test with job_compare() whether it is the 'before' edge in the job
* execution ordering. */
- FOREACH_ARRAY(d, directions, ELEMENTSOF(directions)) {
+ FOREACH_ELEMENT(d, directions) {
Unit *u;
UNIT_FOREACH_DEPENDENCY(u, j->unit, *d) {
diff --git a/src/getty-generator/getty-generator.c b/src/getty-generator/getty-generator.c
index 288f91cedf5..acce71b1a88 100644
--- a/src/getty-generator/getty-generator.c
+++ b/src/getty-generator/getty-generator.c
@@ -150,7 +150,7 @@ static int add_credential_gettys(void) {
};
int r;
- FOREACH_ARRAY(t, table, ELEMENTSOF(table)) {
+ FOREACH_ELEMENT(t, table) {
_cleanup_free_ char *b = NULL;
size_t sz = 0;
diff --git a/src/login/logind-action.c b/src/login/logind-action.c
index c86856806b5..9325d91549d 100644
--- a/src/login/logind-action.c
+++ b/src/login/logind-action.c
@@ -156,7 +156,7 @@ int handle_action_get_enabled_sleep_actions(HandleActionSleepMask mask, char ***
assert(ret);
- FOREACH_ARRAY(i, sleep_actions, ELEMENTSOF(sleep_actions))
+ FOREACH_ELEMENT(i, sleep_actions)
if (FLAGS_SET(mask, 1U << *i)) {
r = strv_extend(&actions, handle_action_to_string(*i));
if (r < 0)
@@ -170,7 +170,7 @@ int handle_action_get_enabled_sleep_actions(HandleActionSleepMask mask, char ***
HandleAction handle_action_sleep_select(Manager *m) {
assert(m);
- FOREACH_ARRAY(i, sleep_actions, ELEMENTSOF(sleep_actions)) {
+ FOREACH_ELEMENT(i, sleep_actions) {
HandleActionSleepMask action_mask = 1U << *i;
const HandleActionData *a;
_cleanup_free_ char *load_state = NULL;
diff --git a/src/login/logind-user.c b/src/login/logind-user.c
index 537cc551cc0..1c2ac81353f 100644
--- a/src/login/logind-user.c
+++ b/src/login/logind-user.c
@@ -469,7 +469,7 @@ static int user_update_slice(User *u) {
{ "IOWeight", u->user_record->io_weight },
};
- FOREACH_ARRAY(st, settings, ELEMENTSOF(settings)) {
+ FOREACH_ELEMENT(st, settings) {
if (st->value == UINT64_MAX)
continue;
diff --git a/src/pcrlock/pcrlock.c b/src/pcrlock/pcrlock.c
index 1fb9d692a27..f6b76d291bc 100644
--- a/src/pcrlock/pcrlock.c
+++ b/src/pcrlock/pcrlock.c
@@ -2816,7 +2816,7 @@ static int verb_lock_secureboot_policy(int argc, char *argv[], void *userdata) {
/* Generates expected records from the current SecureBoot state, as readable in the EFI variables
* right now. */
- FOREACH_ARRAY(vv, variables, ELEMENTSOF(variables)) {
+ FOREACH_ELEMENT(vv, variables) {
_cleanup_(json_variant_unrefp) JsonVariant *record = NULL;
_cleanup_free_ char *name = NULL;
diff --git a/src/shared/bus-wait-for-jobs.c b/src/shared/bus-wait-for-jobs.c
index 2930552be48..e12189f298b 100644
--- a/src/shared/bus-wait-for-jobs.c
+++ b/src/shared/bus-wait-for-jobs.c
@@ -187,7 +187,7 @@ static void log_job_error_with_service_result(const char* service, const char *r
}
if (!isempty(result))
- FOREACH_ARRAY(i, explanations, ELEMENTSOF(explanations))
+ FOREACH_ELEMENT(i, explanations)
if (streq(result, i->result)) {
log_error("Job for %s failed because %s.\n"
"See \"%s status %s\" and \"%s -xeu %s\" for details.\n",
diff --git a/src/shared/compare-operator.c b/src/shared/compare-operator.c
index 6df4be8333b..a13db8ee4fb 100644
--- a/src/shared/compare-operator.c
+++ b/src/shared/compare-operator.c
@@ -41,7 +41,7 @@ CompareOperator parse_compare_operator(const char **s, CompareOperatorParseFlags
* parse_compare_operator() are use on the same string? */
return _COMPARE_OPERATOR_INVALID;
- FOREACH_ARRAY(i, table, ELEMENTSOF(table)) {
+ FOREACH_ELEMENT(i, table) {
const char *e;
if (i->need_mask != 0 && !FLAGS_SET(flags, i->need_mask))
diff --git a/src/shared/dev-setup.c b/src/shared/dev-setup.c
index 3592b0a6505..459e7279921 100644
--- a/src/shared/dev-setup.c
+++ b/src/shared/dev-setup.c
@@ -119,7 +119,7 @@ int make_inaccessible_nodes(
* to lock down these nodes as much as we can, but otherwise try to match them as closely as possible with the
* underlying file, i.e. in the best case we offer the same node type as the underlying node. */
- FOREACH_ARRAY(m, table, ELEMENTSOF(table)) {
+ FOREACH_ELEMENT(m, table) {
_cleanup_free_ char *path = NULL;
mode_t inode_type = *m;
const char *fn;
diff --git a/src/shared/mount-setup.c b/src/shared/mount-setup.c
index 3c0132fd086..56381bc7d87 100644
--- a/src/shared/mount-setup.c
+++ b/src/shared/mount-setup.c
@@ -125,7 +125,7 @@ bool mount_point_is_api(const char *path) {
/* Checks if this mount point is considered "API", and hence
* should be ignored */
- FOREACH_ARRAY(i, mount_table, ELEMENTSOF(mount_table))
+ FOREACH_ELEMENT(i, mount_table)
if (path_equal(path, i->where))
return true;
@@ -521,7 +521,7 @@ int mount_cgroup_legacy_controllers(bool loaded_policy) {
if (!cg_is_legacy_force_enabled())
return -ERFKILL;
- FOREACH_ARRAY(mp, cgroupv1_mount_table, ELEMENTSOF(cgroupv1_mount_table)) {
+ FOREACH_ELEMENT(mp, cgroupv1_mount_table) {
r = mount_one(mp, loaded_policy);
if (r < 0)
return r;
diff --git a/src/shared/sleep-config.c b/src/shared/sleep-config.c
index b8cd83c7c1e..aac145836b6 100644
--- a/src/shared/sleep-config.c
+++ b/src/shared/sleep-config.c
@@ -294,7 +294,7 @@ static int s2h_supported(const SleepConfig *sleep_config, SleepSupport *ret_supp
return false;
}
- FOREACH_ARRAY(i, operations, ELEMENTSOF(operations)) {
+ FOREACH_ELEMENT(i, operations) {
r = sleep_supported_internal(sleep_config, *i, /* check_allowed = */ false, &support);
if (r < 0)
return r;
diff --git a/src/shared/switch-root.c b/src/shared/switch-root.c
index aba9d52e967..cd87417a605 100644
--- a/src/shared/switch-root.c
+++ b/src/shared/switch-root.c
@@ -126,7 +126,7 @@ int switch_root(const char *new_root,
* and switch_root() nevertheless. */
(void) base_filesystem_create_fd(new_root_fd, new_root, UID_INVALID, GID_INVALID);
- FOREACH_ARRAY(transfer, transfer_table, ELEMENTSOF(transfer_table)) {
+ FOREACH_ELEMENT(transfer, transfer_table) {
_cleanup_free_ char *chased = NULL;
unsigned long mount_flags;
diff --git a/src/shared/tpm2-util.c b/src/shared/tpm2-util.c
index 42975cdb970..af2f265bab9 100644
--- a/src/shared/tpm2-util.c
+++ b/src/shared/tpm2-util.c
@@ -4135,7 +4135,7 @@ static const struct {
static int tpm2_ecc_curve_from_openssl_curve_id(int openssl_ecc_curve_id, TPM2_ECC_CURVE *ret) {
assert(ret);
- FOREACH_ARRAY(t, tpm2_openssl_ecc_curve_table, ELEMENTSOF(tpm2_openssl_ecc_curve_table))
+ FOREACH_ELEMENT(t, tpm2_openssl_ecc_curve_table)
if (t->openssl_ecc_curve_id == openssl_ecc_curve_id) {
*ret = t->tpm2_ecc_curve_id;
return 0;
@@ -4148,7 +4148,7 @@ static int tpm2_ecc_curve_from_openssl_curve_id(int openssl_ecc_curve_id, TPM2_E
static int tpm2_ecc_curve_to_openssl_curve_id(TPM2_ECC_CURVE tpm2_ecc_curve_id, int *ret) {
assert(ret);
- FOREACH_ARRAY(t, tpm2_openssl_ecc_curve_table, ELEMENTSOF(tpm2_openssl_ecc_curve_table))
+ FOREACH_ELEMENT(t, tpm2_openssl_ecc_curve_table)
if (t->tpm2_ecc_curve_id == tpm2_ecc_curve_id) {
*ret = t->openssl_ecc_curve_id;
return 0;
diff --git a/src/shared/varlink.c b/src/shared/varlink.c
index 713aff28959..f1c00a21b61 100644
--- a/src/shared/varlink.c
+++ b/src/shared/varlink.c
@@ -4124,7 +4124,7 @@ int varlink_error_to_errno(const char *error, JsonVariant *parameters) {
if (!error)
return 0;
- FOREACH_ARRAY(t, table, ELEMENTSOF(table))
+ FOREACH_ELEMENT(t, table)
if (streq(error, t->error))
return t->value;
diff --git a/src/test/test-creds.c b/src/test/test-creds.c
index 84619c91de9..cc9cc737782 100644
--- a/src/test/test-creds.c
+++ b/src/test/test-creds.c
@@ -243,7 +243,7 @@ TEST(mime_type_matches) {
};
/* Generates the right <match/> expressions for these credentials according to the shared mime-info spec */
- FOREACH_ARRAY(t, tags, ELEMENTSOF(tags)) {
+ FOREACH_ELEMENT(t, tags) {
_cleanup_free_ char *encoded = NULL;
assert_se(base64mem(t, sizeof(sd_id128_t), &encoded) >= 0);
diff --git a/src/test/test-mount-util.c b/src/test/test-mount-util.c
index a2711f059e3..4f6da39f48e 100644
--- a/src/test/test-mount-util.c
+++ b/src/test/test-mount-util.c
@@ -305,7 +305,7 @@ TEST(make_mount_switch_root) {
{ "/", true },
};
- FOREACH_ARRAY(i, table, ELEMENTSOF(table)) {
+ FOREACH_ELEMENT(i, table) {
r = safe_fork("(switch-root)",
FORK_RESET_SIGNALS |
FORK_CLOSE_ALL_FDS |
@@ -358,7 +358,7 @@ TEST(umount_recursive) {
int r;
- FOREACH_ARRAY(t, test_table, ELEMENTSOF(test_table)) {
+ FOREACH_ELEMENT(t, test_table) {
r = safe_fork("(umount-rec)",
FORK_RESET_SIGNALS |
diff --git a/src/test/test-openssl.c b/src/test/test-openssl.c
index 51dc492e965..d0ea0f02155 100644
--- a/src/test/test-openssl.c
+++ b/src/test/test-openssl.c
@@ -136,7 +136,7 @@ static const struct {
TEST(digest_size) {
size_t size;
- FOREACH_ARRAY(t, digest_size_table, ELEMENTSOF(digest_size_table)) {
+ FOREACH_ELEMENT(t, digest_size_table) {
assert(openssl_digest_size(t->alg, &size) >= 0);
assert_se(size == t->size);
diff --git a/src/test/test-stat-util.c b/src/test/test-stat-util.c
index a69f6f06e0a..6f274c917c5 100644
--- a/src/test/test-stat-util.c
+++ b/src/test/test-stat-util.c
@@ -192,7 +192,7 @@ TEST(inode_type_from_string) {
S_IFSOCK,
};
- FOREACH_ARRAY(m, types, ELEMENTSOF(types))
+ FOREACH_ELEMENT(m, types)
assert_se(inode_type_from_string(inode_type_to_string(*m)) == *m);
}
diff --git a/src/test/test-tpm2.c b/src/test/test-tpm2.c
index 1a9c9988188..3b5a375c883 100644
--- a/src/test/test-tpm2.c
+++ b/src/test/test-tpm2.c
@@ -1266,7 +1266,7 @@ static void check_seal_unseal(Tpm2Context *c) {
check_seal_unseal_for_handle(c, 0);
check_seal_unseal_for_handle(c, TPM2_SRK_HANDLE);
- FOREACH_ARRAY(template, test_templates, ELEMENTSOF(test_templates)) {
+ FOREACH_ELEMENT(template, test_templates) {
TPM2B_PUBLIC public = {
.publicArea = **template,
.size = sizeof(**template),
diff --git a/src/update-utmp/update-utmp.c b/src/update-utmp/update-utmp.c
index 4ee935e0441..c376676e8d0 100644
--- a/src/update-utmp/update-utmp.c
+++ b/src/update-utmp/update-utmp.c
@@ -82,7 +82,7 @@ static int get_current_runlevel(Context *c) {
assert(c);
for (unsigned n_attempts = 0;;) {
- FOREACH_ARRAY(e, table, ELEMENTSOF(table)) {
+ FOREACH_ELEMENT(e, table) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
_cleanup_free_ char *state = NULL, *path = NULL;
diff --git a/src/userdb/userdbctl.c b/src/userdb/userdbctl.c
index 918b4d772f2..1718419407b 100644
--- a/src/userdb/userdbctl.c
+++ b/src/userdb/userdbctl.c
@@ -174,7 +174,7 @@ static int table_add_uid_boundaries(Table *table, const UIDRange *p) {
assert(table);
- FOREACH_ARRAY(i, uid_range_table, ELEMENTSOF(uid_range_table)) {
+ FOREACH_ELEMENT(i, uid_range_table) {
_cleanup_free_ char *name = NULL, *comment = NULL;
if (!uid_range_covers(p, i->first, i->last - i->first + 1))
@@ -532,7 +532,7 @@ static int table_add_gid_boundaries(Table *table, const UIDRange *p) {
assert(table);
- FOREACH_ARRAY(i, uid_range_table, ELEMENTSOF(uid_range_table)) {
+ FOREACH_ELEMENT(i, uid_range_table) {
_cleanup_free_ char *name = NULL, *comment = NULL;
if (!uid_range_covers(p, i->first, i->last - i->first + 1))