diff options
-rw-r--r-- | Detail.c | 4 | ||||
-rw-r--r-- | mapfile.c | 15 |
2 files changed, 11 insertions, 8 deletions
@@ -212,11 +212,11 @@ int Detail(char *dev, int brief, int export, int test, char *homehost) printf("ARRAY %s", dev); if (brief > 1) { if (array.raid_disks) - printf("level=%s num-devices=%d", + printf(" level=%s num-devices=%d", c?c:"-unknown-", array.raid_disks ); else - printf("level=container num-devices=%d", + printf(" level=container num-devices=%d", array.nr_disks); } if (container) { @@ -303,19 +303,22 @@ struct map_ent *map_by_name(struct map_ent **map, char *name) */ static void set_member_info(struct supertype *st, struct mdstat_ent *ent) { - char version[strlen(ent->metadata_version)+1]; st->subarray[0] = '\0'; - if (strncmp(ent->metadata_version, "external:", 9) != 0) + if (ent->metadata_version == NULL || + strncmp(ent->metadata_version, "external:", 9) != 0) return; - strcpy(version, ent->metadata_version); - - if (is_subarray(&version[9])) { - char *subarray = strrchr(version, '/'); + if (is_subarray(&ent->metadata_version[9])) { + char version[strlen(ent->metadata_version)+1]; + char *subarray; char *name = &version[10]; + strcpy(version, ent->metadata_version); + subarray = strrchr(version, '/'); + name = &version[10]; + if (!subarray) return; *subarray++ = '\0'; |