summaryrefslogtreecommitdiff
path: root/Assemble.c
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2010-11-22 20:58:06 +1100
committerNeilBrown <neilb@suse.de>2010-11-22 20:58:06 +1100
commit88cef9b3e634987b1689b61c643552e2cdecdbf9 (patch)
tree4d3a9d91e8338a4d8df7c6102a9b740b62376d8b /Assemble.c
parent02c2c474876ed66a016dbeef667e692a69bfec0d (diff)
Assemble: turn next_member goto loop into a for loop.
It becomes much clearer what is happening now. Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'Assemble.c')
-rw-r--r--Assemble.c40
1 files changed, 19 insertions, 21 deletions
diff --git a/Assemble.c b/Assemble.c
index 771cb77c..dbf78f94 100644
--- a/Assemble.c
+++ b/Assemble.c
@@ -406,29 +406,27 @@ int Assemble(struct supertype *st, char *mddev,
fprintf(stderr, Name ": looking in container %s\n",
devname);
- content = tst->ss->container_content(tst, NULL);
- next_member:
-
- if (!content)
- goto loop; /* empty container */
-
- if (content->next == NULL)
+ for (content = tst->ss->container_content(tst, NULL);
+ content;
+ content = content->next) {
+
+ if (!ident_matches(ident, content, tst,
+ homehost, update,
+ report_missmatch ? devname : NULL))
+ /* message already printed */;
+ else if (is_member_busy(content->text_version)) {
+ if (report_missmatch)
+ fprintf(stderr, Name ": member %s in %s is already assembled\n",
+ content->text_version,
+ devname);
+ } else
+ break;
+ }
+ if (!content) {
tmpdev->used = 2;
-
- if (!ident_matches(ident, content, tst,
- homehost, update,
- report_missmatch ? devname : NULL)) {
- content = content->next;
- goto next_member;
- } else if (is_member_busy(content->text_version)) {
- if (report_missmatch)
- fprintf(stderr, Name ": member %s in %s is already assembled\n",
- content->text_version,
- devname);
-
- content = content->next;
- goto next_member;
+ goto loop; /* empty container */
}
+
st = tst; tst = NULL;
if (!auto_assem && inargv && tmpdev->next != NULL) {
fprintf(stderr, Name ": %s is a container, but is not "