]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
fix qemud version reporting when qemu is not installed
authorJim Meyering <meyering@redhat.com>
Fri, 30 Jan 2009 19:57:20 +0000 (19:57 +0000)
committerJim Meyering <meyering@redhat.com>
Fri, 30 Jan 2009 19:57:20 +0000 (19:57 +0000)
* src/qemu_conf.c (uname_normalize): New function, factored out of...
(qemudBuildCommandLine): ...here.  Use the new function.
(qemudExtractVersion): Use it here, rather than hard-coding "i686".

ChangeLog
src/qemu_conf.c

index fac7ab593e82836e7c447762d5417ebbce76cee8..fada8d18d72d81e1d31b06cd710513450daa61c2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Fri Jan 30 20:55:57 +0100 2009 Jim Meyering <meyering@redhat.com>
+
+       fix qemud version reporting when qemu is not installed
+       * src/qemu_conf.c (uname_normalize): New function, factored out of...
+       (qemudBuildCommandLine): ...here.  Use the new function.
+       (qemudExtractVersion): Use it here, rather than hard-coding "i686".
+
 Fri Jan 30 17:16:22 GMT 2009 Daniel P. Berrange <berrange@redhat.com>
 
        * src/qemu_conf.c: Fix ifname= handling for type=ethernet
index d86b18946e79187d04996022e02404ddaa635a86..ef45b12dfaf3e1fa306dab15eeae14e33a03acef 100644 (file)
@@ -486,17 +486,33 @@ rewait:
     return ret;
 }
 
+static void
+uname_normalize (struct utsname *ut)
+{
+    uname(ut);
+
+    /* Map i386, i486, i586 to i686.  */
+    if (ut->machine[0] == 'i' &&
+        ut->machine[1] != '\0' &&
+        ut->machine[2] == '8' &&
+        ut->machine[3] == '6' &&
+        ut->machine[4] == '\0')
+        ut->machine[1] = '6';
+}
+
 int qemudExtractVersion(virConnectPtr conn,
                         struct qemud_driver *driver) {
     const char *binary;
     struct stat sb;
+    struct utsname ut;
 
     if (driver->qemuVersion > 0)
         return 0;
 
+    uname_normalize(&ut);
     if ((binary = virCapabilitiesDefaultGuestEmulator(driver->caps,
                                                       "hvm",
-                                                      "i686",
+                                                      ut.machine,
                                                       "qemu")) == NULL)
         return -1;
 
@@ -718,14 +734,7 @@ int qemudBuildCommandLine(virConnectPtr conn,
     char domid[50];
     char *pidfile;
 
-    uname(&ut);
-
-    /* Nasty hack make i?86 look like i686 to simplify next comparison */
-    if (ut.machine[0] == 'i' &&
-        ut.machine[2] == '8' &&
-        ut.machine[3] == '6' &&
-        !ut.machine[4])
-        ut.machine[1] = '6';
+    uname_normalize(&ut);
 
     virUUIDFormat(vm->def->uuid, uuid);