
On Wed, Jul 22, 2009 at 10:57:33PM +0100, Mark McLoughlin wrote:
Add a little helper function to write the monitor command followed by carriage return in a single write.
This doesn't make any real difference, but allows us to more easily switch to using sendmsg() when using the monitor over a unix socket.
* src/qemu_conf.c: split qemudMonitorSend() out --- src/qemu_driver.c | 31 +++++++++++++++++++++++-------- 1 files changed, 23 insertions(+), 8 deletions(-)
diff --git a/src/qemu_driver.c b/src/qemu_driver.c index 4f0c60e..7d4de9e 100644 --- a/src/qemu_driver.c +++ b/src/qemu_driver.c @@ -2012,6 +2012,27 @@ qemuMonitorDiscardPendingData(virDomainObjPtr vm) { } while (ret > 0); }
+static int +qemudMonitorSend(const virDomainObjPtr vm, + const char *cmd) +{ + char *full; + size_t len; + int ret = -1; + + if (virAsprintf(&full, "%s\r", cmd) < 0) + return -1; + + len = strlen(full); + + if (safewrite(vm->monitor, full, len) != len) + goto out; + + ret = 0; +out: + VIR_FREE(full); + return ret; +}
It would seem easier to just keep the original model of two safewrite() calls, than to introduce an extra allocation & free here. Not a mustfix for comitting, but it'd be nicer.
static int qemudMonitorCommandExtra(const virDomainObjPtr vm, @@ -2021,14 +2042,10 @@ qemudMonitorCommandExtra(const virDomainObjPtr vm, char **reply) { int size = 0; char *buf = NULL; - size_t cmdlen = strlen(cmd); - size_t extralen = extra ? strlen(extra) : 0;
qemuMonitorDiscardPendingData(vm);
- if (safewrite(vm->monitor, cmd, cmdlen) != cmdlen) - return -1; - if (safewrite(vm->monitor, "\r", 1) != 1) + if (qemudMonitorSend(vm, cmd) < 0) return -1;
*reply = NULL; @@ -2063,9 +2080,7 @@ qemudMonitorCommandExtra(const virDomainObjPtr vm, if (buf) { if (extra) { if (strstr(buf, extraPrompt) != NULL) { - if (safewrite(vm->monitor, extra, extralen) != extralen) - return -1; - if (safewrite(vm->monitor, "\r", 1) != 1) + if (qemudMonitorSend(vm, extra) < 0) return -1; extra = NULL; }
ACK, Daniel -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|