maint: use lighter-weight function for straight appends

It costs quite a few processor cycles to go through printf parsing
just to determine that we only meant to append.

* src/xen/xend_internal.c (xend_op_ext): Consolidate multiple
printfs into one.
* src/qemu/qemu_command.c (qemuBuildWatchdogDevStr)
(qemuBuildUSBInputDevStr, qemuBuildSoundDevStr)
(qemuBuildSoundCodecStr, qemuBuildVideoDevStr): Likewise.
(qemuBuildCpuArgStr, qemuBuildCommandLine): Prefer virBufferAdd
over virBufferVsprintf for trivial appends.
* src/phyp/phyp_driver.c (phypExec, phypUUIDTable_Push)
(phypUUIDTable_Pull): Likewise.
* src/conf/nwfilter_conf.c (macProtocolIDFormatter)
(arpOpcodeFormatter, formatIPProtocolID, printStringItems)
(virNWFilterPrintStateMatchFlags, virNWIPAddressFormat)
(virNWFilterDefFormat): Likewise.
* src/security/virt-aa-helper.c (main): Likewise.
* src/util/sexpr.c (sexpr2string): Likewise.
* src/xenxs/xen_sxpr.c (xenFormatSxprChr): Likewise.
* src/xenxs/xen_xm.c (xenFormatXMDisk): Likewise.
This commit is contained in:
Eric Blake 2011-04-14 13:27:47 -06:00
parent 1afaafe307
commit dbe3bad987
8 changed files with 30 additions and 41 deletions

View File

@ -488,7 +488,7 @@ macProtocolIDFormatter(virBufferPtr buf,
if (intMapGetByInt(macProtoMap,
nwf->p.ethHdrFilter.dataProtocolID.u.u16,
&str)) {
virBufferVSprintf(buf, "%s", str);
virBufferAdd(buf, str, -1);
} else {
if (nwf->p.ethHdrFilter.dataProtocolID.datatype == DATATYPE_UINT16)
asHex = false;
@ -591,7 +591,7 @@ arpOpcodeFormatter(virBufferPtr buf,
if (intMapGetByInt(arpOpcodeMap,
nwf->p.arpHdrFilter.dataOpcode.u.u16,
&str)) {
virBufferVSprintf(buf, "%s", str);
virBufferAdd(buf, str, -1);
} else {
virBufferVSprintf(buf, "%d", nwf->p.arpHdrFilter.dataOpcode.u.u16);
}
@ -653,7 +653,7 @@ formatIPProtocolID(virBufferPtr buf,
if (intMapGetByInt(ipProtoMap,
nwf->p.ipHdrFilter.ipHdr.dataProtocolID.u.u8,
&str)) {
virBufferVSprintf(buf, "%s", str);
virBufferAdd(buf, str, -1);
} else {
if (nwf->p.ipHdrFilter.ipHdr.dataProtocolID.datatype == DATATYPE_UINT8)
asHex = false;
@ -734,8 +734,8 @@ printStringItems(virBufferPtr buf, const struct int_map *int_map,
for (i = 0; int_map[i].val; i++) {
if (mask == int_map[i].attr) {
if (c >= 1)
virBufferVSprintf(buf, "%s", sep);
virBufferVSprintf(buf, "%s", int_map[i].val);
virBufferAdd(buf, sep, -1);
virBufferAdd(buf, int_map[i].val, -1);
c++;
}
}
@ -769,7 +769,7 @@ virNWFilterPrintStateMatchFlags(virBufferPtr buf, const char *prefix,
if (!disp_none && (flags & RULE_FLAG_STATE_NONE))
return;
virBufferVSprintf(buf, "%s", prefix);
virBufferAdd(buf, prefix, -1);
printStringItems(buf, stateMatchMap, flags, ",");
}
@ -2699,7 +2699,7 @@ virNWIPAddressFormat(virBufferPtr buf, virSocketAddrPtr ipaddr)
char *output = virSocketFormatAddr(ipaddr);
if (output) {
virBufferVSprintf(buf, "%s", output);
virBufferAdd(buf, output, -1);
VIR_FREE(output);
}
}
@ -2936,7 +2936,7 @@ virNWFilterDefFormat(virNWFilterDefPtr def)
xml = virNWFilterEntryFormat(def->filterEntries[i]);
if (!xml)
goto err_exit;
virBufferVSprintf(&buf, "%s", xml);
virBufferAdd(&buf, xml, -1);
VIR_FREE(xml);
}

View File

@ -1,4 +1,3 @@
/*
* Copyright (C) 2010-2011 Red Hat, Inc.
* Copyright IBM Corp. 2009
@ -156,7 +155,7 @@ phypExec(LIBSSH2_SESSION *session, const char *cmd, int *exit_status,
rc = libssh2_channel_read(channel, buffer, buffer_size);
if (rc > 0) {
bytecount += rc;
virBufferVSprintf(&tex_ret, "%s", buffer);
virBufferAdd(&tex_ret, buffer, -1);
}
}
while (rc > 0);
@ -494,7 +493,7 @@ phypUUIDTable_Push(virConnectPtr conn)
char *remote_file = NULL;
if (conn->uri->user != NULL) {
virBufferVSprintf(&username, "%s", conn->uri->user);
virBufferAdd(&username, conn->uri->user, -1);
if (virBufferError(&username)) {
virBufferFreeAndReset(&username);
@ -711,7 +710,7 @@ phypUUIDTable_Pull(virConnectPtr conn)
char *remote_file = NULL;
if (conn->uri->user != NULL) {
virBufferVSprintf(&username, "%s", conn->uri->user);
virBufferAdd(&username, conn->uri->user, -1);
if (virBufferError(&username)) {
virBufferFreeAndReset(&username);

View File

@ -1798,8 +1798,7 @@ qemuBuildWatchdogDevStr(virDomainWatchdogDefPtr dev,
goto error;
}
virBufferVSprintf(&buf, "%s", model);
virBufferVSprintf(&buf, ",id=%s", dev->info.alias);
virBufferVSprintf(&buf, "%s,id=%s", model, dev->info.alias);
if (qemuBuildDeviceAddressStr(&buf, &dev->info, qemuCaps) < 0)
goto error;
@ -1845,10 +1844,9 @@ qemuBuildUSBInputDevStr(virDomainInputDefPtr dev)
{
virBuffer buf = VIR_BUFFER_INITIALIZER;
virBufferVSprintf(&buf, "%s",
virBufferVSprintf(&buf, "%s,id=%s",
dev->type == VIR_DOMAIN_INPUT_TYPE_MOUSE ?
"usb-mouse" : "usb-tablet");
virBufferVSprintf(&buf, ",id=%s", dev->info.alias);
"usb-mouse" : "usb-tablet", dev->info.alias);
if (virBufferError(&buf)) {
virReportOOMError();
@ -1884,8 +1882,7 @@ qemuBuildSoundDevStr(virDomainSoundDefPtr sound,
else if (STREQ(model, "ich6"))
model = "intel-hda";
virBufferVSprintf(&buf, "%s", model);
virBufferVSprintf(&buf, ",id=%s", sound->info.alias);
virBufferVSprintf(&buf, "%s,id=%s", model, sound->info.alias);
if (qemuBuildDeviceAddressStr(&buf, &sound->info, qemuCaps) < 0)
goto error;
@ -1908,10 +1905,8 @@ qemuBuildSoundCodecStr(virDomainSoundDefPtr sound,
virBuffer buf = VIR_BUFFER_INITIALIZER;
int cad = 0;
virBufferVSprintf(&buf, "%s", codec);
virBufferVSprintf(&buf, ",id=%s-codec%d", sound->info.alias, cad);
virBufferVSprintf(&buf, ",bus=%s.0", sound->info.alias);
virBufferVSprintf(&buf, ",cad=%d", cad);
virBufferVSprintf(&buf, "%s,id=%s-codec%d,bus=%s.0,cad=%d",
codec, sound->info.alias, cad, sound->info.alias, cad);
if (virBufferError(&buf)) {
virReportOOMError();
@ -1938,8 +1933,7 @@ qemuBuildVideoDevStr(virDomainVideoDefPtr video,
goto error;
}
virBufferVSprintf(&buf, "%s", model);
virBufferVSprintf(&buf, ",id=%s", video->info.alias);
virBufferVSprintf(&buf, "%s,id=%s", model, video->info.alias);
if (video->type == VIR_DOMAIN_VIDEO_TYPE_QXL) {
if (video->vram > (UINT_MAX / 1024)) {
@ -2572,7 +2566,7 @@ qemuBuildCpuArgStr(const struct qemud_driver *driver,
goto cleanup;
*hasHwVirt = hasSVM > 0 ? true : false;
virBufferVSprintf(&buf, "%s", guest->model);
virBufferAdd(&buf, guest->model, -1);
for (i = 0; i < guest->nfeatures; i++) {
char sign;
if (guest->features[i].policy == VIR_CPU_FEATURE_DISABLE)
@ -3128,7 +3122,7 @@ qemuBuildCommandLine(virConnectPtr conn,
else if (def->os.bootmenu == VIR_DOMAIN_BOOT_MENU_DISABLED)
virBufferVSprintf(&boot_buf, "order=%s,menu=off", boot);
} else {
virBufferVSprintf(&boot_buf, "%s", boot);
virBufferAdd(&boot_buf, boot, -1);
}
virCommandAddArgBuffer(cmd, &boot_buf);
@ -3291,8 +3285,7 @@ qemuBuildCommandLine(virConnectPtr conn,
host->name,
host->port);
} else {
virBufferVSprintf(&rbd_hosts, "%s",
host->name);
virBufferAdd(&rbd_hosts, host->name, -1);
}
}
}
@ -3414,8 +3407,7 @@ qemuBuildCommandLine(virConnectPtr conn,
host->name,
host->port);
} else {
virBufferVSprintf(&rbd_hosts, "%s",
host->name);
virBufferAdd(&rbd_hosts, host->name, -1);
}
}
break;

View File

@ -1204,7 +1204,7 @@ main(int argc, char **argv)
virBufferVSprintf(&buf, " \"%s/run/libvirt/**/%s.pid\" rwk,\n",
LOCALSTATEDIR, ctl->def->name);
if (ctl->files)
virBufferVSprintf(&buf, "%s", ctl->files);
virBufferAdd(&buf, ctl->files, -1);
}
if (virBufferError(&buf)) {

View File

@ -1,7 +1,7 @@
/*
* sexpr.c : S-Expression routines to communicate with the Xen Daemon
*
* Copyright (C) 2010 Red Hat, Inc.
* Copyright (C) 2010-2011 Red Hat, Inc.
* Copyright (C) 2005 Anthony Liguori <aliguori@us.ibm.com>
*
* This file is subject to the terms and conditions of the GNU Lesser General
@ -234,7 +234,7 @@ sexpr2string(const struct sexpr *sexpr, virBufferPtr buffer)
strchr(sexpr->u.value, '('))
virBufferVSprintf(buffer, "'%s'", sexpr->u.value);
else
virBufferVSprintf(buffer, "%s", sexpr->u.value);
virBufferAdd(buffer, sexpr->u.value, -1);
break;
case SEXPR_NIL:

View File

@ -487,13 +487,11 @@ xend_op_ext(virConnectPtr xend, const char *path, const char *key, va_list ap)
while (k) {
v = va_arg(ap, const char *);
virBufferVSprintf(&buf, "%s", k);
virBufferVSprintf(&buf, "%s", "=");
virBufferVSprintf(&buf, "%s", v);
virBufferVSprintf(&buf, "%s=%s", k, v);
k = va_arg(ap, const char *);
if (k)
virBufferVSprintf(&buf, "%s", "&");
virBufferAddChar(&buf, '&');
}
if (virBufferError(&buf)) {

View File

@ -1514,7 +1514,7 @@ xenFormatSxprChr(virDomainChrDefPtr def,
case VIR_DOMAIN_CHR_TYPE_STDIO:
case VIR_DOMAIN_CHR_TYPE_VC:
case VIR_DOMAIN_CHR_TYPE_PTY:
virBufferVSprintf(buf, "%s", type);
virBufferAdd(buf, type, -1);
break;
case VIR_DOMAIN_CHR_TYPE_FILE:

View File

@ -1115,13 +1115,13 @@ static int xenFormatXMDisk(virConfValuePtr list,
goto cleanup;
}
}
virBufferVSprintf(&buf, "%s", disk->src);
virBufferAdd(&buf, disk->src, -1);
}
virBufferAddLit(&buf, ",");
if (hvm && xendConfigVersion == 1)
virBufferAddLit(&buf, "ioemu:");
virBufferVSprintf(&buf, "%s", disk->dst);
virBufferAdd(&buf, disk->dst, -1);
if (disk->device == VIR_DOMAIN_DISK_DEVICE_CDROM)
virBufferAddLit(&buf, ":cdrom");