On Wed, Mar 24, 2010 at 11:46:27AM +0000, Daniel P. Berrange wrote: > Use the new virDomainUpdateDeviceFlags API to allow the VNC password > to be changed on the fly > > * src/internal.h: Define STREQ_NULLABLE() which is like STREQ() > but does not crash if either argument is NULL, and treats two > NULLs as equal. > * src/libvirt_private.syms: Export virDomainGraphicsTypeToString > * src/qemu/qemu_driver.c: Support VNC password change on a live > machine > * src/qemu/qemu_monitor.c: Disable crazy debugging info. Treat a > NULL password as "" (empty string), allowing passwords to be > disabled in the monitor > --- > src/internal.h | 6 +++ > src/libvirt_private.syms | 1 + > src/qemu/qemu_driver.c | 81 ++++++++++++++++++++++++++++++++++++++++++++++ > src/qemu/qemu_monitor.c | 17 ++++++++- > 4 files changed, 103 insertions(+), 2 deletions(-) > > diff --git a/src/internal.h b/src/internal.h > index 4ec6edc..f82fbd2 100644 > --- a/src/internal.h > +++ b/src/internal.h > @@ -58,6 +58,12 @@ > # define STRCASENEQLEN(a,b,n) (strncasecmp(a,b,n) != 0) > # define STRPREFIX(a,b) (strncmp(a,b,strlen(b)) == 0) > > +# define STREQ_NULLABLE(a, b) \ > + ((!(a) && !(b)) || ((a) && (b) && STREQ((a), (b)))) > +# define STRNEQ_NULLABLE(a, b) \ > + ((!(a) ^ !(b)) || ((a) && (b) && STRNEQ((a), (b)))) > + Not sure I can parse that, I would assume it's equivalent to: (!(STREQ_NULLABLE((a), (b)))) which would be simpler IMHO [...] > > +static virDomainGraphicsDefPtr qemuDomainFindGraphics(virDomainObjPtr vm, > + virDomainGraphicsDefPtr dev) > +{ > + int i; > + > + for (i = 0 ; i < vm->def->ngraphics ; i++) { > + if (vm->def->graphics[i]->type == dev->type) > + return vm->def->graphics[i]; > + } > + > + return NULL; > +} it's a bit surprizing to match just on the type, what if we somehow add dual graphic support for a given type ? > + [...] > > -#if QEMU_DEBUG_RAW_IO > +#if DEBUG_IO > +#if DEBUG_RAW_IO > char *str1 = qemuMonitorEscapeNonPrintable(msg ? msg->txBuffer : ""); > char *str2 = qemuMonitorEscapeNonPrintable(mon->buffer); > VIR_ERROR("Process %d %p %p [[[[%s]]][[[%s]]]", (int)mon->bufferOffset, mon->msg, msg, str1, str2); > @@ -311,6 +313,8 @@ qemuMonitorIOProcess(qemuMonitorPtr mon) > #else > VIR_DEBUG("Process %d", (int)mon->bufferOffset); > #endif > +#endif > + hum, somehow I feel it's gonna break cppi indenting isn't it ? but it's minor, ACK Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ daniel@xxxxxxxxxxxx | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/ -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list