From bd335c961fed6982e5ad8c2322414ff33a46e92e Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Thu, 17 Jun 2021 16:12:06 +0900 Subject: [PATCH] list: introduce LIST_FOREACH_BACKWARDS() macro and drop LIST_FOREACH_AFTER/BEFORE() --- src/basic/list.h | 7 ++----- src/core/device.c | 8 ++++---- src/core/swap.c | 4 ++-- src/udev/udev-rules.c | 2 +- 4 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/basic/list.h b/src/basic/list.h index 256b7187c2..e488fff9f0 100644 --- a/src/basic/list.h +++ b/src/basic/list.h @@ -142,11 +142,8 @@ #define LIST_FOREACH_SAFE(name,i,n,head) \ for ((i) = (head); (i) && (((n) = (i)->name##_next), 1); (i) = (n)) -#define LIST_FOREACH_BEFORE(name,i,p) \ - for ((i) = (p)->name##_prev; (i); (i) = (i)->name##_prev) - -#define LIST_FOREACH_AFTER(name,i,p) \ - for ((i) = (p)->name##_next; (i); (i) = (i)->name##_next) +#define LIST_FOREACH_BACKWARDS(name,i,p) \ + for ((i) = (p); (i); (i) = (i)->name##_prev) /* Iterate through all the members of the list p is included in, but skip over p */ #define LIST_FOREACH_OTHERS(name,i,p) \ diff --git a/src/core/device.c b/src/core/device.c index 5ed5ceb290..66841984fe 100644 --- a/src/core/device.c +++ b/src/core/device.c @@ -771,11 +771,11 @@ static Unit *device_following(Unit *u) { return NULL; /* Make everybody follow the unit that's named after the sysfs path */ - LIST_FOREACH_AFTER(same_sysfs, other, d) + LIST_FOREACH(same_sysfs, other, d->same_sysfs_next) if (startswith(UNIT(other)->id, "sys-")) return UNIT(other); - LIST_FOREACH_BEFORE(same_sysfs, other, d) { + LIST_FOREACH_BACKWARDS(same_sysfs, other, d->same_sysfs_prev) { if (startswith(UNIT(other)->id, "sys-")) return UNIT(other); @@ -802,13 +802,13 @@ static int device_following_set(Unit *u, Set **_set) { if (!set) return -ENOMEM; - LIST_FOREACH_AFTER(same_sysfs, other, d) { + LIST_FOREACH(same_sysfs, other, d->same_sysfs_next) { r = set_put(set, other); if (r < 0) return r; } - LIST_FOREACH_BEFORE(same_sysfs, other, d) { + LIST_FOREACH_BACKWARDS(same_sysfs, other, d->same_sysfs_prev) { r = set_put(set, other); if (r < 0) return r; diff --git a/src/core/swap.c b/src/core/swap.c index 42d2e0242e..48ba5c7664 100644 --- a/src/core/swap.c +++ b/src/core/swap.c @@ -1323,11 +1323,11 @@ static Unit *swap_following(Unit *u) { if (streq_ptr(s->what, s->devnode)) return NULL; - LIST_FOREACH_AFTER(same_devnode, other, s) + LIST_FOREACH(same_devnode, other, s->same_devnode_next) if (streq_ptr(other->what, other->devnode)) return UNIT(other); - LIST_FOREACH_BEFORE(same_devnode, other, s) { + LIST_FOREACH_BACKWARDS(same_devnode, other, s->same_devnode_prev) { if (streq_ptr(other->what, other->devnode)) return UNIT(other); diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c index d050134aef..cb7de261d5 100644 --- a/src/udev/udev-rules.c +++ b/src/udev/udev-rules.c @@ -1154,7 +1154,7 @@ static void rule_resolve_goto(UdevRuleFile *rule_file) { if (!FLAGS_SET(line->type, LINE_HAS_GOTO)) continue; - LIST_FOREACH_AFTER(rule_lines, i, line) + LIST_FOREACH(rule_lines, i, line->rule_lines_next) if (streq_ptr(i->label, line->goto_label)) { line->goto_line = i; break; -- 2.25.1