From 8215aab0036e65da47a2646f85749e9f5ea5d252 Mon Sep 17 00:00:00 2001 From: John Ferlan Date: Fri, 15 Jul 2016 07:02:05 -0400 Subject: [PATCH] qemu: Move and rename qemuBufferEscapeComma Move to virqemu and rename to virQEMUBuildBufferEscapeComma. This can then be shared by the storage driver when it builds the command line for qemuimg --- src/libvirt_private.syms | 1 + src/qemu/qemu_command.c | 33 +++++++++------------------------ src/util/virqemu.c | 15 +++++++++++++++ src/util/virqemu.h | 2 ++ 4 files changed, 27 insertions(+), 24 deletions(-) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index cc1fa81611..973efd34c5 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -2196,6 +2196,7 @@ virProcessWait; # util/virqemu.h +virQEMUBuildBufferEscapeComma; virQEMUBuildObjectCommandlineFromJSON; diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 583dc34f81..2e04f571ed 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -151,21 +151,6 @@ VIR_ENUM_IMPL(qemuNumaPolicy, VIR_DOMAIN_NUMATUNE_MEM_LAST, "interleave"); -/** - * qemuBufferEscapeComma: - * @buf: buffer to append the escaped string - * @str: the string to escape - * - * qemu requires that any values passed on the command line which contain - * a ',' must escape it using an extra ',' as the escape character - */ -static void -qemuBufferEscapeComma(virBufferPtr buf, const char *str) -{ - virBufferEscape(buf, ',', ",", "%s", str); -} - - /** * qemuBuildHasMasterKey: * @qemuCaps: QEMU binary capabilities @@ -221,7 +206,7 @@ qemuBuildMasterKeyCommandLine(virCommandPtr cmd, virCommandAddArg(cmd, "-object"); virBufferAsprintf(&buf, "secret,id=%s,format=raw,file=", alias); - qemuBufferEscapeComma(&buf, path); + virQEMUBuildBufferEscapeComma(&buf, path); virCommandAddArgBuffer(cmd, &buf); ret = 0; @@ -1233,7 +1218,7 @@ qemuBuildDriveStr(virDomainDiskDefPtr disk, break; } - qemuBufferEscapeComma(&opt, source); + virQEMUBuildBufferEscapeComma(&opt, source); virBufferAddLit(&opt, ","); if (secinfo && secinfo->type == VIR_DOMAIN_SECRET_INFO_TYPE_AES) { @@ -3777,7 +3762,7 @@ qemuBuildVirtioInputDevStr(const virDomainDef *def, goto error; } virBufferAsprintf(&buf, "virtio-input-host%s,id=%s,evdev=", suffix, dev->info.alias); - qemuBufferEscapeComma(&buf, dev->source.evdev); + virQEMUBuildBufferEscapeComma(&buf, dev->source.evdev); break; case VIR_DOMAIN_INPUT_TYPE_LAST: break; @@ -4779,7 +4764,7 @@ qemuBuildChrChardevStr(virLogManagerPtr logManager, case VIR_DOMAIN_CHR_TYPE_UNIX: virBufferAsprintf(&buf, "socket,id=char%s,path=", alias); - qemuBufferEscapeComma(&buf, dev->data.nix.path); + virQEMUBuildBufferEscapeComma(&buf, dev->data.nix.path); if (dev->data.nix.listen) virBufferAddLit(&buf, ",server,nowait"); break; @@ -6151,7 +6136,7 @@ qemuBuildBootCommandLine(virCommandPtr cmd, virBuffer buf = VIR_BUFFER_INITIALIZER; virCommandAddArg(cmd, "-acpitable"); virBufferAddLit(&buf, "sig=SLIC,file="); - qemuBufferEscapeComma(&buf, def->os.slic_table); + virQEMUBuildBufferEscapeComma(&buf, def->os.slic_table); virCommandAddArgBuffer(cmd, &buf); } @@ -6738,7 +6723,7 @@ qemuBuildNameCommandLine(virCommandPtr cmd, if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_NAME_GUEST)) virBufferAddLit(&buf, "guest="); - qemuBufferEscapeComma(&buf, def->name); + virQEMUBuildBufferEscapeComma(&buf, def->name); if (cfg->setProcessName && virQEMUCapsGet(qemuCaps, QEMU_CAPS_NAME_PROCESS)) @@ -7275,7 +7260,7 @@ qemuBuildGraphicsVNCCommandLine(virQEMUDriverConfigPtr cfg, switch (glisten->type) { case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_SOCKET: virBufferAddLit(&opt, "unix:"); - qemuBufferEscapeComma(&opt, glisten->socket); + virQEMUBuildBufferEscapeComma(&opt, glisten->socket); break; case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_ADDRESS: @@ -8851,10 +8836,10 @@ qemuBuildTPMBackendStr(const virDomainDef *def, goto error; } virBufferAddLit(&buf, ",path="); - qemuBufferEscapeComma(&buf, devset ? devset : tpmdev); + virQEMUBuildBufferEscapeComma(&buf, devset ? devset : tpmdev); virBufferAddLit(&buf, ",cancel-path="); - qemuBufferEscapeComma(&buf, cancel_path); + virQEMUBuildBufferEscapeComma(&buf, cancel_path); VIR_FREE(devset); VIR_FREE(cancel_path); diff --git a/src/util/virqemu.c b/src/util/virqemu.c index 895168e20b..79a4292e75 100644 --- a/src/util/virqemu.c +++ b/src/util/virqemu.c @@ -140,3 +140,18 @@ virQEMUBuildObjectCommandlineFromJSON(const char *type, virBufferFreeAndReset(&buf); return ret; } + + +/** + * virQEMUBuildBufferEscapeComma: + * @buf: buffer to append the escaped string + * @str: the string to escape + * + * qemu requires that any values passed on the command line which contain + * a ',' must escape it using an extra ',' as the escape character + */ +void +virQEMUBuildBufferEscapeComma(virBufferPtr buf, const char *str) +{ + virBufferEscape(buf, ',', ",", "%s", str); +} diff --git a/src/util/virqemu.h b/src/util/virqemu.h index af4ec1dc31..103341201b 100644 --- a/src/util/virqemu.h +++ b/src/util/virqemu.h @@ -25,10 +25,12 @@ # define __VIR_QEMU_H_ # include "internal.h" +# include "virbuffer.h" # include "virjson.h" char *virQEMUBuildObjectCommandlineFromJSON(const char *type, const char *alias, virJSONValuePtr props); +void virQEMUBuildBufferEscapeComma(virBufferPtr buf, const char *str); #endif /* __VIR_QEMU_H_ */