]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
Assemble: change 'skip' label to a variable.
authorNeilBrown <neilb@suse.de>
Mon, 22 Nov 2010 09:58:05 +0000 (20:58 +1100)
committerNeilBrown <neilb@suse.de>
Mon, 22 Nov 2010 09:58:05 +0000 (20:58 +1100)
This gets rid of some gotos which makes the code flow a bit
more clear.

Signed-off-by: NeilBrown <neilb@suse.de>
Assemble.c

index 4b9b4089c1e15308fb130b8c8ca50b40deddd5c3..6602a0906fc91a493c0fa05ce37e259c9f29b47c 100644 (file)
@@ -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 "