From: Yu Watanabe Date: Thu, 17 Jun 2021 07:12:06 +0000 (+0900) Subject: list: introduce LIST_FOREACH_BACKWARDS() macro and drop LIST_FOREACH_AFTER/BEFORE() X-Git-Tag: v250-rc1~854^2~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=bd335c961fed6982e5ad8c2322414ff33a46e92e;p=thirdparty%2Fsystemd.git list: introduce LIST_FOREACH_BACKWARDS() macro and drop LIST_FOREACH_AFTER/BEFORE() --- diff --git a/src/basic/list.h b/src/basic/list.h index 256b7187c2e..e488fff9f02 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 5ed5ceb2904..66841984fea 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 42d2e0242ec..48ba5c76649 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 d050134aef5..cb7de261d5a 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;