]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
Deal with CPU models in []
authorJiri Denemark <jdenemar@redhat.com>
Tue, 13 Apr 2010 16:59:14 +0000 (18:59 +0200)
committerJiri Denemark <jdenemar@redhat.com>
Thu, 22 Apr 2010 08:20:25 +0000 (10:20 +0200)
Qemu committed a patch which list some CPU names in [] when asked for
supported CPUs (qemu -cpu ?). Yet, it needs such CPUs to be passed
without those square braces. When probing for supported CPU models, we
can just strip the square braces and pretend we have never seen them.

src/qemu/qemu_conf.c

index 355fdb9a1e310a21e71547872bbdb3b121ba02bb..5dc57eac2f0f5cc0c5a127ed00705bebb8a4fba5 100644 (file)
@@ -628,7 +628,9 @@ typedef int
                        const char ***retcpus);
 
 /* Format:
- * <arch> <model>
+ *      <arch> <model>
+ * qemu-0.13 encloses some model names in []:
+ *      <arch> [<model>]
  */
 static int
 qemudParseX86Models(const char *output,
@@ -661,15 +663,22 @@ qemudParseX86Models(const char *output,
             continue;
 
         if (retcpus) {
+            unsigned int len;
+
             if (VIR_REALLOC_N(cpus, count + 1) < 0)
                 goto error;
 
             if (next)
-                cpus[count] = strndup(p, next - p - 1);
+                len = next - p - 1;
             else
-                cpus[count] = strdup(p);
+                len = strlen(p);
+
+            if (len > 2 && *p == '[' && p[len - 1] == ']') {
+                p++;
+                len -= 2;
+            }
 
-            if (!cpus[count])
+            if (!(cpus[count] = strndup(p, len)))
                 goto error;
         }
         count++;