blkid-print: handle /dev/vdX devices 19/317919/3 accepted/tizen_unified_toolchain accepted/tizen/9.0/unified/20241030.235817 accepted/tizen/unified/20241001.004059 accepted/tizen/unified/toolchain/20241004.101806 accepted/tizen/unified/x/20241001.153935 accepted/tizen/unified/x/asan/20241014.000141 tizen_9.0_m2_release
authorJacek Kryszyn <j.kryszyn@samsung.com>
Tue, 10 Sep 2024 05:00:04 +0000 (07:00 +0200)
committerJacek Kryszyn <j.kryszyn@samsung.com>
Mon, 23 Sep 2024 13:22:50 +0000 (15:22 +0200)
In QEMU virtual disks are named /dev/vdX. blkid-print
would put "p" letter between "vdX" and the number of
a device. This change fixes the issue.

Change-Id: I523ce5837f3c2ca727ad41875a51cde3fe872fa4

src/blkid-print/blkid-print.c

index 05d5f5d947149398eaf932744469df66afe5e930..5f0e394ea69747e8e729bfa459c4dc8a6c4f96b9 100644 (file)
@@ -22,6 +22,8 @@
 #include <stdlib.h>
 #include "blkid-api.h"
 
+#define ARRAY_LEN(arr) sizeof(arr)/sizeof(arr[0])
+
 void usage(const char* msg) {
        if (msg) {
                fprintf(stderr, "%s\n", msg);
@@ -119,9 +121,10 @@ int main(int argc, char *argv[]) {
        }
        const char *part_label = blkid_partition_get_name(part);
        char part_path[PATH_MAX];
-       // /dev/sda1 vs /dev/mmcblk0p1 /dev/nvme0n1p1
+       // /dev/sda1 /dev/vda1 vs /dev/mmcblk0p1 /dev/nvme0n1p1
        // no_separator vs "p" separator
-       if (strncmp("/dev/sd", device_name, strlen("/dev/sd")) == 0)
+       if (strncmp("/dev/sd", device_name, ARRAY_LEN("/dev/sd") - 1) == 0 ||
+               strncmp("/dev/vd", device_name, ARRAY_LEN("/dev/vd") - 1) == 0)
                snprintf(part_path, PATH_MAX, "%s%d", device_name, part_nr);
        else
                snprintf(part_path, PATH_MAX, "%sp%d", device_name, part_nr);