From: NeilBrown Date: Mon, 22 Nov 2010 09:58:05 +0000 (+1100) Subject: Assemble: change 'skip' label to a variable. X-Git-Tag: mdadm-3.2~285 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fa0312397e105afee9c61d2b9c016b3fe6a1178f;p=thirdparty%2Fmdadm.git Assemble: change 'skip' label to a variable. This gets rid of some gotos which makes the code flow a bit more clear. Signed-off-by: NeilBrown --- diff --git a/Assemble.c b/Assemble.c index 4b9b4089..6602a090 100644 --- a/Assemble.c +++ b/Assemble.c @@ -352,6 +352,7 @@ int Assemble(struct supertype *st, char *mddev, if (tst->ss->container_content && tst->loaded_container) { + int skip = 0; /* tmpdev is a container. We need to be either * looking for a member, or auto-assembling */ @@ -415,32 +416,32 @@ int Assemble(struct supertype *st, char *mddev, fprintf(stderr, Name ": member %s in %s is already assembled\n", content->text_version, devname); - skip: - content = content->next; - if (content) - goto next_member; - tst->ss->free_super(tst); - tst = NULL; - if (auto_assem) - goto loop; - dev_policy_free(pol); - return 1; - } - if (ident->member && ident->member[0]) { + skip = 1; + } else if (ident->member && ident->member[0]) { char *s = strchr(content->text_version+1, '/'); if (s == NULL) { fprintf(stderr, Name ": badly formatted version: %s\n", content->text_version); - goto skip; - } - if (strcmp(ident->member, s+1) != 0) { + skip = 1; + } else if (strcmp(ident->member, s+1) != 0) { if (report_missmatch) fprintf(stderr, Name ": skipping wrong member %s\n", content->text_version); - goto skip; + skip = 1; } } + if (skip) { + content = content->next; + if (content) + goto next_member; + tst->ss->free_super(tst); + tst = NULL; + if (auto_assem) + goto loop; + dev_policy_free(pol); + return 1; + } st = tst; tst = NULL; if (!auto_assem && inargv && tmpdev->next != NULL) { fprintf(stderr, Name ": %s is a container, but is not "