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>
This commit is contained in:
NeilBrown 2010-11-22 20:58:05 +11:00
parent a655e55064
commit bac0d92e93
1 changed files with 19 additions and 15 deletions

View File

@ -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)