From fa0312397e105afee9c61d2b9c016b3fe6a1178f Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Mon, 22 Nov 2010 20:58:05 +1100 Subject: [PATCH] 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 --- Assemble.c | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) 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 " -- 2.47.2