diff --git a/AUTHORS b/AUTHORS index 51198269c7..1c570bcb5c 100644 --- a/AUTHORS +++ b/AUTHORS @@ -39,6 +39,7 @@ Patches have also been contributed by: Jim Paris <jim@jtan.com> Chris Lalancette <clalance@redhat.com> Guido Guenther <agx@sigxcpu.org> + Daniel Hokka Zakrisson <daniel@hozac.com> [....send patches to get your name here....] diff --git a/ChangeLog b/ChangeLog index 070f320a63..d81f622a85 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,9 @@ -Mon Jan 15 09:18:53 EST 2008 Daniel P. Berrange <berrange@redhat.com> +Tue Jan 15 10:01:53 EST 2008 Daniel P. Berrange <berrange@redhat.com> + + * src/qemu_conf.h, src/qemu_conf.c: Add support for 'keymap' + parameter wrt to VNC servers (Daniel Hokka Zakrisson) + +Tue Jan 15 09:18:53 EST 2008 Daniel P. Berrange <berrange@redhat.com> * src/remote_internal.c: Fix off by one in checking SSH argv for NULL. Fix format args in error message to avoid diff --git a/src/qemu_conf.c b/src/qemu_conf.c index d03d989e22..922223e739 100644 --- a/src/qemu_conf.c +++ b/src/qemu_conf.c @@ -218,6 +218,7 @@ void qemudFreeVMDef(struct qemud_vm_def *def) { input = input->next; free(prev); } + xmlFree(def->keymap); free(def); } @@ -1245,6 +1246,7 @@ static struct qemud_vm_def *qemudParseXML(virConnectPtr conn, else strcpy(def->vncListen, driver->vncListen); def->vncListen[BR_INET_ADDR_MAXLEN-1] = '\0'; + def->keymap = (char *) xmlGetProp(obj->nodesetval->nodeTab[0], BAD_CAST "keymap"); xmlFree(vncport); xmlFree(vnclisten); } else if (!strcmp((char *)prop, "sdl")) { @@ -1807,6 +1809,12 @@ int qemudBuildCommandLine(virConnectPtr conn, goto no_memory; if (!((*argv)[++n] = strdup(vncdisplay))) goto no_memory; + if (vm->def->keymap) { + if (!((*argv)[++n] = strdup("-k"))) + goto no_memory; + if (!((*argv)[++n] = strdup(vm->def->keymap))) + goto no_memory; + } } else if (vm->def->graphicsType == QEMUD_GRAPHICS_NONE) { /* Nada - we added -nographic earlier in this function */ } else { @@ -2918,6 +2926,11 @@ char *qemudGenerateXML(virConnectPtr conn, def->vncListen) < 0) goto no_memory; + if (def->keymap && + virBufferVSprintf(buf, " keymap='%s'", + def->keymap) < 0) + goto no_memory; + if (virBufferAdd(buf, "/>\n", -1) < 0) goto no_memory; break; diff --git a/src/qemu_conf.h b/src/qemu_conf.h index e2c7514dae..7b242f7c75 100644 --- a/src/qemu_conf.h +++ b/src/qemu_conf.h @@ -206,6 +206,7 @@ struct qemud_vm_def { int vncPort; int vncActivePort; char vncListen[BR_INET_ADDR_MAXLEN]; + char *keymap; int ndisks; struct qemud_vm_disk_def *disks;