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".
This commit is contained in:
Jim Meyering 2009-01-30 19:57:20 +00:00
parent a6ef2e0055
commit a119a98081
2 changed files with 25 additions and 9 deletions

View File

@ -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> Fri Jan 30 17:16:22 GMT 2009 Daniel P. Berrange <berrange@redhat.com>
* src/qemu_conf.c: Fix ifname= handling for type=ethernet * src/qemu_conf.c: Fix ifname= handling for type=ethernet

View File

@ -486,17 +486,33 @@ rewait:
return ret; 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, int qemudExtractVersion(virConnectPtr conn,
struct qemud_driver *driver) { struct qemud_driver *driver) {
const char *binary; const char *binary;
struct stat sb; struct stat sb;
struct utsname ut;
if (driver->qemuVersion > 0) if (driver->qemuVersion > 0)
return 0; return 0;
uname_normalize(&ut);
if ((binary = virCapabilitiesDefaultGuestEmulator(driver->caps, if ((binary = virCapabilitiesDefaultGuestEmulator(driver->caps,
"hvm", "hvm",
"i686", ut.machine,
"qemu")) == NULL) "qemu")) == NULL)
return -1; return -1;
@ -718,14 +734,7 @@ int qemudBuildCommandLine(virConnectPtr conn,
char domid[50]; char domid[50];
char *pidfile; char *pidfile;
uname(&ut); uname_normalize(&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';
virUUIDFormat(vm->def->uuid, uuid); virUUIDFormat(vm->def->uuid, uuid);