]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
Detail: Factor out add_device()
authorMartin Wilck <mwilck@arcor.de>
Thu, 27 Jun 2013 19:39:27 +0000 (21:39 +0200)
committerNeilBrown <neilb@suse.de>
Mon, 1 Jul 2013 23:43:51 +0000 (09:43 +1000)
Makes the code a little more readable.

Signed-off-by: Martin Wilck <mwilck@arcor.de>
Signed-off-by: NeilBrown <neilb@suse.de>
Detail.c

index 05e645c1adfed5462b9d567ee5496af46fed8597..83395f641aa9ca9b170cb6226281e6d883ce9e55 100644 (file)
--- a/Detail.c
+++ b/Detail.c
@@ -32,6 +32,22 @@ static int cmpstringp(const void *p1, const void *p2)
        return strcmp(* (char * const *) p1, * (char * const *) p2);
 }
 
+static int add_device(const char *dev, char ***p_devices,
+                     int *p_max_devices, int n_devices)
+{
+       if (n_devices + 1 >= *p_max_devices) {
+               *p_max_devices += 16;
+               *p_devices = xrealloc(*p_devices, *p_max_devices *
+                                     sizeof(**p_devices));
+               if (!*p_devices) {
+                       *p_max_devices = 0;
+                       return 0;
+               }
+       };
+       (*p_devices)[n_devices] = xstrdup(dev);
+       return n_devices + 1;
+}
+
 int Detail(char *dev, struct context *c)
 {
        /*
@@ -660,17 +676,11 @@ This is pretty boring
                        rv |= 1;
                dv=map_dev_preferred(disk.major, disk.minor, 0, c->prefer);
                if (dv != NULL) {
-                       if (c->brief) {
-                               if (n_devices + 1 >= max_devices) {
-                                       max_devices += 16;
-                                       devices = xrealloc(devices, max_devices
-                                                          *sizeof(*devices));
-                                       if (!devices)
-                                               goto out;
-                               };
-                               devices[n_devices] = xstrdup(dv);
-                               n_devices++;
-                       } else
+                       if (c->brief)
+                               n_devices = add_device(dv, &devices,
+                                                      &max_devices,
+                                                      n_devices);
+                       else
                                printf("   %s", dv);
                }
                if (!c->brief) printf("\n");