From a119a98081e04fa7443ff86b8a5ac5501e870d70 Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Fri, 30 Jan 2009 19:57:20 +0000 Subject: [PATCH] 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". --- ChangeLog | 7 +++++++ src/qemu_conf.c | 27 ++++++++++++++++++--------- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index fac7ab593e..fada8d18d7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Fri Jan 30 20:55:57 +0100 2009 Jim Meyering + + 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 * src/qemu_conf.c: Fix ifname= handling for type=ethernet diff --git a/src/qemu_conf.c b/src/qemu_conf.c index d86b18946e..ef45b12dfa 100644 --- a/src/qemu_conf.c +++ b/src/qemu_conf.c @@ -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);