]> git.ipfire.org Git - ipfire-2.x.git/commitdiff
installer: Improve formatting of disk vendors/models.
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 30 Jul 2014 21:14:17 +0000 (23:14 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 30 Jul 2014 21:14:17 +0000 (23:14 +0200)
src/installer/hw.c

index 4976f5322df7a02a08dc18f745f7b81c18aae084..048aeaaf53ded6f9b6ca158a6db7aa7dabca19d6 100644 (file)
@@ -228,10 +228,11 @@ struct hw_disk** hw_find_disks(struct hw* hw) {
                        vendor = udev_device_get_sysattr_value(dev, "vendor");
                if (!vendor)
                        vendor = udev_device_get_sysattr_value(dev, "manufacturer");
-               if (!vendor)
-                       vendor = "N/A";
 
-               strncpy(disk->vendor, vendor, sizeof(disk->vendor));
+               if (vendor)
+                       strncpy(disk->vendor, vendor, sizeof(disk->vendor));
+               else
+                       *disk->vendor = '\0';
 
                // Model
                const char* model = udev_device_get_property_value(dev, "ID_MODEL");
@@ -239,14 +240,28 @@ struct hw_disk** hw_find_disks(struct hw* hw) {
                        model = udev_device_get_sysattr_value(dev, "model");
                if (!model)
                        model = udev_device_get_sysattr_value(dev, "product");
-               if (!model)
-                       model = "N/A";
 
-               strncpy(disk->model, model, sizeof(disk->model));
+               if (model)
+                       strncpy(disk->model, model, sizeof(disk->model));
+               else
+                       *disk->model = '\0';
+
+               // Format description
+               char size_str[STRING_SIZE];
+               snprintf(size_str, sizeof(size_str), "%4.1fGB", (double)disk->size / pow(1024, 3));
 
-               snprintf(disk->description, sizeof(disk->description),
-                       "%4.1fGB %s - %s", (double)disk->size / pow(1024, 3),
-                       disk->vendor, disk->model);
+               if (*disk->vendor && *disk->model) {
+                       snprintf(disk->description, sizeof(disk->description),
+                               "%s | %s - %s", size_str, disk->vendor, disk->model);
+
+               } else if (*disk->vendor || *disk->model) {
+                       snprintf(disk->description, sizeof(disk->description),
+                               "%s | %s", size_str, (*disk->vendor) ? disk->vendor : disk->model);
+
+               } else {
+                       snprintf(disk->description, sizeof(disk->description),
+                               "%s | N/A", size_str);
+               }
 
                *disks++ = disk;