
"Daniel P. Berrange" <berrange@redhat.com> wrote:
With the recent work to support -drive arg, the QEMU driver now supports many types of bus for disks attached to VMs - ide, scsi, virtio. This patches adds another type 'xen' for the Xen blkfront driver. ... diff -r f6b47c9986b9 src/util.c --- a/src/util.c Sat May 10 12:57:20 2008 -0400 +++ b/src/util.c Sat May 10 12:57:46 2008 -0400 @@ -779,23 +779,17 @@ const char *ptr = NULL; int idx = 0;
- if (strlen(name) < 3) + if (!STRPREFIX(name, "fd") && + !STRPREFIX(name, "hd") && + !STRPREFIX(name, "vd") && + !STRPREFIX(name, "sd") && + !STRPREFIX(name, "xvd")) return -1;
- switch (*name) { - case 'f': - case 'h': - case 'v': - case 's': - break; - default: - return 0; - } - - if (*(name + 1) != 'd') - return -1; - - ptr = name+2; + if (STRPREFIX(name, "xvd")) + ptr = name+3; + else + ptr = name+2;
Looks fine. The only change I'd be tempted to make would be to iterate over the prefixes, so that the fact "xvd" is a different length isn't handled separately: const char *ptr = NULL; static char const* const drive_prefix[] = {"fd", "hd", "vd", "sd", "xvd"}; unsigned int i; for (i = 0; i < ARRAY_CARDINALITY(drive_prefix); i++) if (STRPREFIX(name, drive_prefix[i]) { ptr = name + strlen(drive_prefix[i]); break; } if (!ptr) return -1;