diff options
author | NeilBrown <neilb@suse.de> | 2010-11-22 20:58:05 +1100 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2010-11-22 20:58:05 +1100 |
commit | bac0d92e931259a2d41be1b9fe779d39d5d011b7 (patch) | |
tree | 7047ca75e8bc4abbc55371d85bc2ea93c353d21e /Assemble.c | |
parent | a655e5506478c540db06649fe7833c3c0982f80c (diff) |
Assemble: merge to large 'if' statements.
In assemble, we see (inside a 'for' loop):
if (condition) {
lots of stuff
} else
something
small thing
if (same condition) {
lots more stuff
break;
}
where 'condition' cannot be changed in the middle.
So simplify this to
if (condition) {
lots of stuff
small thing
lots more stuff
break;
}
something
small thing
which duplicates the small thing, but provides much
conceptual simplicity.
Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'Assemble.c')
-rw-r--r-- | Assemble.c | 34 |
1 files changed, 19 insertions, 15 deletions
@@ -402,22 +402,11 @@ int Assemble(struct supertype *st, char *mddev, if (tmpdev->content == NULL) tmpdev->used = 2; - } else if (ident->container || ident->member) { - /* No chance of this matching if we don't have - * a container */ - if (report_missmatch) - fprintf(stderr, Name "%s is not a container, and one is required.\n", - devname); - goto loop; - } - - if (!ident_matches(ident, content, tst, - homehost, update, - report_missmatch ? devname : NULL)) - goto loop; + if (!ident_matches(ident, content, tst, + homehost, update, + report_missmatch ? devname : NULL)) + goto loop; - if (tst->ss->container_content - && tst->loaded_container) { /* we have the one container we need, don't keep * looking. If the chosen member is active, skip. */ @@ -466,6 +455,21 @@ int Assemble(struct supertype *st, char *mddev, content->text_version, devname); break; } + + if (ident->container || ident->member) { + /* No chance of this matching if we don't have + * a container */ + if (report_missmatch) + fprintf(stderr, Name "%s is not a container, and one is required.\n", + devname); + goto loop; + } + + if (!ident_matches(ident, content, tst, + homehost, update, + report_missmatch ? devname : NULL)) + goto loop; + if (st == NULL) st = dup_super(tst); if (st->minor_version == -1) |