+Tue Feb 3 15:21:45 CET 2008 Jim Meyering <meyering@redhat.com>
+
+ Eliminate all uses of virBufferAdd with string literals.
+ * Makefile.maint (sc_prohibit_virBufferAdd_with_string_literal):
+ New rule.
+ * src/buf.h (virBufferAddLit): Define.
+ * src/conf.c (virConfSaveValue): Use virBufferAddLit, in place
+ of virBufferAdd everywhere possible.
+ (virConfSaveEntry): Likewise.
+ * src/qemu_conf.c (qemudGenerateXML, qemudGenerateNetworkXML): Likewise.
+ * src/qemu_driver.c (qemudGetFeatures, qemudGetCapabilities): Likewise.
+ * src/test.c (testDomainDumpXML, testNetworkDumpXML): Likewise.
+ * src/xen_internal.c (xenHypervisorMakeCapabilitiesXML): Likewise.
+ * src/xend_internal.c (xend_parse_sexp_desc_os): Likewise.
+ (xend_parse_sexp_desc, sexpr_to_xend_topology_xml): Likewise.
+ * src/xm_internal.c (xenXMDomainFormatXML, xenXMDomainPinVcpu): Likewise.
+ * src/xml.c (virSaveCpuSet, virParseXenCpuTopology): Likewise.
+ (virDomainParseXMLGraphicsDescImage): Likewise.
+ (virDomainParseXMLGraphicsDescVFB, virDomainParseXMLOSDescHVM): Likewise.
+ (virDomainParseXMLOSDescPV, virDomainParseXMLDiskDesc): Likewise.
+ (virDomainParseXMLIfDesc, virDomainParseXMLDesc): Likewise.
+
Mon Feb 2 15:56:45 CET 2008 Jim Meyering <meyering@redhat.com>
Enable more checks for unmarked messages; fix violators.
{ echo '$(ME): found unmarked diagnostic(s)' 1>&2; \
exit 1; } || :
+sc_prohibit_virBufferAdd_with_string_literal:
+ @grep -nE '\<virBufferAdd *\([^,]+, *"[^"]' $$($(CVS_LIST_EXCEPT)) && \
+ { echo '$(ME): use virBufferAddLit, not virBufferAdd,' \
+ 'with a string literal' 1>&2; exit 1; } || :
+
# Avoid useless parentheses like those in this example:
# #if defined (SYMBOL) || defined (SYM2)
sc_useless_cpp_parens:
/*
* buf.h: buffers for libvirt
*
- * Copyright (C) 2005-2007 Red Hat, Inc.
+ * Copyright (C) 2005-2008 Red Hat, Inc.
*
* See COPYING.LIB for the License of this software
*
int virBufferEscapeString(virBufferPtr buf, const char *format, const char *str);
int virBufferURIEncodeString (virBufferPtr buf, const char *str);
+#define virBufferAddLit(buf_, literal_string_) \
+ virBufferAdd (buf_, "" literal_string_ "", sizeof literal_string_ - 1)
+
#endif /* __VIR_BUFFER_H__ */
virConfValuePtr cur;
cur = val->list;
- virBufferAdd(buf, "[ ", 2);
+ virBufferAddLit(buf, "[ ");
if (cur != NULL) {
virConfSaveValue(buf, cur);
cur = cur->next;
while (cur != NULL) {
- virBufferAdd(buf, ", ", 2);
+ virBufferAddLit(buf, ", ");
virConfSaveValue(buf, cur);
cur = cur->next;
}
}
- virBufferAdd(buf, " ]", 2);
+ virBufferAddLit(buf, " ]");
break;
}
default:
{
if (cur->name != NULL) {
virBufferAdd(buf, cur->name, -1);
- virBufferAdd(buf, " = ", 3);
+ virBufferAddLit(buf, " = ");
virConfSaveValue(buf, cur->value);
if (cur->comment != NULL) {
- virBufferAdd(buf, " #", 2);
+ virBufferAddLit(buf, " #");
virBufferAdd(buf, cur->comment, -1);
}
} else if (cur->comment != NULL) {
- virBufferAdd(buf, "#", 1);
+ virBufferAddLit(buf, "#");
virBufferAdd(buf, cur->comment, -1);
}
- virBufferAdd(buf, "\n", 1);
+ virBufferAddLit(buf, "\n");
return(0);
}
if (virBufferVSprintf(buf, " <vcpu>%d</vcpu>\n", def->vcpus) < 0)
goto no_memory;
- if (virBufferAdd(buf, " <os>\n", -1) < 0)
+ if (virBufferAddLit(buf, " <os>\n") < 0)
goto no_memory;
if (def->virtType == QEMUD_VIRT_QEMU) {
goto no_memory;
}
- if (virBufferAdd(buf, " </os>\n", -1) < 0)
+ if (virBufferAddLit(buf, " </os>\n") < 0)
goto no_memory;
if (def->features & QEMUD_FEATURE_ACPI) {
- if (virBufferAdd(buf, " <features>\n", -1) < 0)
+ if (virBufferAddLit(buf, " <features>\n") < 0)
goto no_memory;
- if (virBufferAdd(buf, " <acpi/>\n", -1) < 0)
+ if (virBufferAddLit(buf, " <acpi/>\n") < 0)
goto no_memory;
- if (virBufferAdd(buf, " </features>\n", -1) < 0)
+ if (virBufferAddLit(buf, " </features>\n") < 0)
goto no_memory;
}
virBufferVSprintf(buf, " <clock offset='%s'/>\n", def->localtime ? "localtime" : "utc");
- if (virBufferAdd(buf, " <on_poweroff>destroy</on_poweroff>\n", -1) < 0)
+ if (virBufferAddLit(buf, " <on_poweroff>destroy</on_poweroff>\n") < 0)
goto no_memory;
if (def->noReboot) {
- if (virBufferAdd(buf, " <on_reboot>destroy</on_reboot>\n", -1) < 0)
+ if (virBufferAddLit(buf, " <on_reboot>destroy</on_reboot>\n") < 0)
goto no_memory;
} else {
- if (virBufferAdd(buf, " <on_reboot>restart</on_reboot>\n", -1) < 0)
+ if (virBufferAddLit(buf, " <on_reboot>restart</on_reboot>\n") < 0)
goto no_memory;
}
- if (virBufferAdd(buf, " <on_crash>destroy</on_crash>\n", -1) < 0)
+ if (virBufferAddLit(buf, " <on_crash>destroy</on_crash>\n") < 0)
goto no_memory;
- if (virBufferAdd(buf, " <devices>\n", -1) < 0)
+ if (virBufferAddLit(buf, " <devices>\n") < 0)
goto no_memory;
if (virBufferVSprintf(buf, " <emulator>%s</emulator>\n", def->os.binary) < 0)
goto no_memory;
if (disk->readonly)
- if (virBufferAdd(buf, " <readonly/>\n", -1) < 0)
+ if (virBufferAddLit(buf, " <readonly/>\n") < 0)
goto no_memory;
if (virBufferVSprintf(buf, " </disk>\n") < 0)
}
/* If graphics is enable, add implicit mouse */
if (def->graphicsType != QEMUD_GRAPHICS_NONE)
- if (virBufferAdd(buf, " <input type='mouse' bus='ps2'/>\n", -1) < 0)
+ if (virBufferAddLit(buf, " <input type='mouse' bus='ps2'/>\n") < 0)
goto no_memory;
switch (def->graphicsType) {
case QEMUD_GRAPHICS_VNC:
- if (virBufferAdd(buf, " <graphics type='vnc'", -1) < 0)
+ if (virBufferAddLit(buf, " <graphics type='vnc'") < 0)
goto no_memory;
if (def->vncPort &&
def->keymap) < 0)
goto no_memory;
- if (virBufferAdd(buf, "/>\n", -1) < 0)
+ if (virBufferAddLit(buf, "/>\n") < 0)
goto no_memory;
break;
case QEMUD_GRAPHICS_SDL:
- if (virBufferAdd(buf, " <graphics type='sdl'/>\n", -1) < 0)
+ if (virBufferAddLit(buf, " <graphics type='sdl'/>\n") < 0)
goto no_memory;
break;
if (def->graphicsType == QEMUD_GRAPHICS_VNC) {
}
- if (virBufferAdd(buf, " </devices>\n", -1) < 0)
+ if (virBufferAddLit(buf, " </devices>\n") < 0)
goto no_memory;
- if (virBufferAdd(buf, "</domain>\n", -1) < 0)
+ if (virBufferAddLit(buf, "</domain>\n") < 0)
goto no_memory;
return virBufferContentAndFree (buf);
virBufferVSprintf(buf, " <forward dev='%s'/>\n",
def->forwardDev);
} else {
- virBufferAdd(buf, " <forward/>\n", -1);
+ virBufferAddLit(buf, " <forward/>\n");
}
}
- virBufferAdd(buf, " <bridge", -1);
+ virBufferAddLit(buf, " <bridge");
if (qemudIsActiveNetwork(network)) {
if (virBufferVSprintf(buf, " name='%s'", network->bridge) < 0)
goto no_memory;
goto no_memory;
if (def->ipAddress[0] || def->netmask[0]) {
- if (virBufferAdd(buf, " <ip", -1) < 0)
+ if (virBufferAddLit(buf, " <ip") < 0)
goto no_memory;
if (def->ipAddress[0] &&
virBufferVSprintf(buf, " netmask='%s'", def->netmask) < 0)
goto no_memory;
- if (virBufferAdd(buf, ">\n", -1) < 0)
+ if (virBufferAddLit(buf, ">\n") < 0)
goto no_memory;
if (def->ranges) {
struct qemud_dhcp_range_def *range = def->ranges;
- if (virBufferAdd(buf, " <dhcp>\n", -1) < 0)
+ if (virBufferAddLit(buf, " <dhcp>\n") < 0)
goto no_memory;
while (range) {
if (virBufferVSprintf(buf, " <range start='%s' end='%s' />\n",
goto no_memory;
range = range->next;
}
- if (virBufferAdd(buf, " </dhcp>\n", -1) < 0)
+ if (virBufferAddLit(buf, " </dhcp>\n") < 0)
goto no_memory;
}
- if (virBufferAdd(buf, " </ip>\n", -1) < 0)
+ if (virBufferAddLit(buf, " </ip>\n") < 0)
goto no_memory;
}
- if (virBufferAdd(buf, "</network>\n", -1) < 0)
+ if (virBufferAddLit(buf, "</network>\n") < 0)
goto no_memory;
return virBufferContentAndFree (buf);
/*
* driver.c: core driver methods for managing qemu guests
*
- * Copyright (C) 2006, 2007 Red Hat, Inc.
+ * Copyright (C) 2006, 2007, 2008 Red Hat, Inc.
* Copyright (C) 2006 Daniel P. Berrange
*
* This library is free software; you can redistribute it and/or
if (flags == NULL)
return 0;
- r = virBufferAdd(xml, "\
- <features>\n", -1);
+ r = virBufferAddLit(xml, "\
+ <features>\n");
if (r == -1) return r;
for (i = 0; flags[i].name; ++i) {
if (STREQ(flags[i].name, "pae")) {
int pae = flags[i].default_on || flags[i].toggle;
int nonpae = flags[i].toggle;
if (pae) {
- r = virBufferAdd(xml, " <pae/>\n", -1);
+ r = virBufferAddLit(xml, " <pae/>\n");
if (r == -1) return r;
}
if (nonpae) {
- r = virBufferAdd(xml, " <nonpae/>\n", -1);
+ r = virBufferAddLit(xml, " <nonpae/>\n");
if (r == -1) return r;
}
} else {
if (r == -1) return r;
}
}
- r = virBufferAdd(xml, " </features>\n", -1);
+ r = virBufferAddLit(xml, " </features>\n");
return r;
}
}
if (have_kqemu) {
- r = virBufferAdd (xml,
+ r = virBufferAddLit (xml,
"\
- <domain type=\"kqemu\"/>\n", -1);
+ <domain type=\"kqemu\"/>\n");
if (r == -1) goto vir_buffer_failed;
}
if (have_kvm) {
- r = virBufferAdd (xml,
+ r = virBufferAddLit (xml,
"\
<domain type=\"kvm\">\n\
<emulator>/usr/bin/qemu-kvm</emulator>\n\
- </domain>\n", -1);
+ </domain>\n");
if (r == -1) goto vir_buffer_failed;
}
- r = virBufferAdd (xml, " </arch>\n", -1);
+ r = virBufferAddLit (xml, " </arch>\n");
if (r == -1) goto vir_buffer_failed;
r = qemudGetFeatures(xml, qemudArchs[i].fflags);
if (r == -1) goto vir_buffer_failed;
- r = virBufferAdd (xml, " </guest>\n", -1);
+ r = virBufferAddLit (xml, " </guest>\n");
if (r == -1) goto vir_buffer_failed;
/* The "other" PC architecture needs emulation. */
qemudArchs[i].machines[j]);
if (r == -1) goto vir_buffer_failed;
}
- r = virBufferAdd (xml, " </arch>\n </guest>\n", -1);
+ r = virBufferAddLit (xml, " </arch>\n </guest>\n");
if (r == -1) goto vir_buffer_failed;
}
qemudArchs[i].machines[j]);
if (r == -1) goto vir_buffer_failed;
}
- r = virBufferAdd (xml, " </arch>\n", -1);
+ r = virBufferAddLit (xml, " </arch>\n");
if (r == -1) goto vir_buffer_failed;
r = qemudGetFeatures(xml, qemudArchs[i].fflags);
if (r == -1) goto vir_buffer_failed;
- r = virBufferAdd (xml, " </guest>\n", -1);
+ r = virBufferAddLit (xml, " </guest>\n");
if (r == -1) goto vir_buffer_failed;
}
/* Finish off. */
- r = virBufferAdd (xml,
+ r = virBufferAddLit (xml,
"\
-</capabilities>\n", -1);
+</capabilities>\n");
if (r == -1) goto vir_buffer_failed;
return virBufferContentAndFree(xml);
virBufferVSprintf(buf, " <on_poweroff>%s</on_poweroff>\n", testRestartFlagToString(privdom->onPoweroff));
virBufferVSprintf(buf, " <on_crash>%s</on_crash>\n", testRestartFlagToString(privdom->onCrash));
- virBufferAdd(buf, "</domain>\n", -1);
+ virBufferAddLit(buf, "</domain>\n");
xml = buf->content;
free(buf);
return (NULL);
}
- virBufferAdd(buf, "<network>\n", -1);
+ virBufferAddLit(buf, "<network>\n");
virBufferVSprintf(buf, " <name>%s</name>\n", network->name);
uuid = network->uuid;
virUUIDFormat(uuid, uuidstr);
if (privnet->forwardDev[0])
virBufferVSprintf(buf, " <forward dev='%s'/>\n", privnet->forwardDev);
else
- virBufferAdd(buf, " <forward/>\n", -1);
+ virBufferAddLit(buf, " <forward/>\n");
}
virBufferVSprintf(buf, " <ip address='%s' netmask='%s'>\n",
privnet->ipAddress, privnet->ipNetmask);
- virBufferAdd(buf, " <dhcp>\n", -1);
+ virBufferAddLit(buf, " <dhcp>\n");
virBufferVSprintf(buf, " <range start='%s' end='%s'/>\n",
privnet->dhcpStart, privnet->dhcpEnd);
- virBufferAdd(buf, " </dhcp>\n", -1);
- virBufferAdd(buf, " </ip>\n", -1);
+ virBufferAddLit(buf, " </dhcp>\n");
+ virBufferAddLit(buf, " </ip>\n");
- virBufferAdd(buf, "</network>\n", -1);
+ virBufferAddLit(buf, "</network>\n");
xml = buf->content;
free(buf);
/*
* xen_internal.c: direct access to Xen hypervisor level
*
- * Copyright (C) 2005, 2006, 2007 Red Hat, Inc.
+ * Copyright (C) 2005, 2006, 2007, 2008 Red Hat, Inc.
*
* See COPYING.LIB for the License of this software
*
if (r == -1) goto vir_buffer_failed;
}
if (host_pae) {
- r = virBufferAdd (xml, "\
- <pae/>\n", -1);
+ r = virBufferAddLit (xml, "\
+ <pae/>\n");
if (r == -1) goto vir_buffer_failed;
}
- r = virBufferAdd (xml,
+ r = virBufferAddLit (xml,
"\
</features>\n\
</cpu>\n\
<uri_transport>xenmigr</uri_transport>\n\
</uri_transports>\n\
</migration_features>\n\
- </host>\n", -1);
+ </host>\n");
if (r == -1) goto vir_buffer_failed;
if (sys_interface_version >= 4) {
guest_archs[i].bits == 64 ? "64" : "");
if (r == -1) goto vir_buffer_failed;
}
- r = virBufferAdd (xml,
+ r = virBufferAddLit (xml,
"\
</arch>\n\
- <features>\n", -1);
+ <features>\n");
if (r == -1) goto vir_buffer_failed;
if (guest_archs[i].pae) {
- r = virBufferAdd (xml,
+ r = virBufferAddLit (xml,
"\
- <pae/>\n", -1);
+ <pae/>\n");
if (r == -1) goto vir_buffer_failed;
}
if (guest_archs[i].nonpae) {
- r = virBufferAdd (xml, " <nonpae/>\n", -1);
+ r = virBufferAddLit (xml, " <nonpae/>\n");
if (r == -1) goto vir_buffer_failed;
}
if (guest_archs[i].ia64_be) {
- r = virBufferAdd (xml, " <ia64_be/>\n", -1);
+ r = virBufferAddLit (xml, " <ia64_be/>\n");
if (r == -1) goto vir_buffer_failed;
}
if (guest_archs[i].hvm) {
- r = virBufferAdd (xml, " <acpi default='on' toggle='yes'/>\n",
- -1);
+ r = virBufferAddLit (xml,
+ " <acpi default='on' toggle='yes'/>\n");
if (r == -1) goto vir_buffer_failed;
// In Xen 3.1.0, APIC is always on and can't be toggled
if (hv_major >= 3 && hv_minor > 0) {
- r = virBufferAdd (xml,
- " <apic default='off' toggle='no'/>\n", -1);
+ r = virBufferAddLit (xml,
+ " <apic default='off' toggle='no'/>\n");
} else {
- r = virBufferAdd (xml,
- " <apic default='on' toggle='yes'/>\n", -1);
+ r = virBufferAddLit (xml,
+ " <apic default='on' toggle='yes'/>\n");
}
if (r == -1) goto vir_buffer_failed;
}
- r = virBufferAdd (xml, "\
+ r = virBufferAddLit (xml, "\
</features>\n\
- </guest>\n", -1);
+ </guest>\n");
if (r == -1) goto vir_buffer_failed;
}
- r = virBufferAdd (xml,
+ r = virBufferAddLit (xml,
"\
-</capabilities>\n", -1);
+</capabilities>\n");
if (r == -1) goto vir_buffer_failed;
xml_str = strdup (xml->content);
if (!xml_str) goto vir_buffer_failed;
return(-1);
}
- virBufferAdd(buf, " <os>\n", 7);
+ virBufferAddLit(buf, " <os>\n");
if (hvm) {
virBufferVSprintf(buf, " <type>hvm</type>\n");
tmp = sexpr_node(node, "domain/image/hvm/kernel");
while (*tmp) {
if (*tmp == 'a')
/* XXX no way to deal with boot from 2nd floppy */
- virBufferAdd(buf, " <boot dev='fd'/>\n", 21 );
+ virBufferAddLit(buf, " <boot dev='fd'/>\n");
else if (*tmp == 'c')
/*
* Don't know what to put here. Say the vm has been given 3
* We're going to assume that first disk is the boot disk since
* this is most common practice
*/
- virBufferAdd(buf, " <boot dev='hd'/>\n", 21 );
+ virBufferAddLit(buf, " <boot dev='hd'/>\n");
else if (*tmp == 'd')
- virBufferAdd(buf, " <boot dev='cdrom'/>\n", 24 );
+ virBufferAddLit(buf, " <boot dev='cdrom'/>\n");
else if (*tmp == 'n')
- virBufferAdd(buf, " <boot dev='network'/>\n", 26 );
+ virBufferAddLit(buf, " <boot dev='network'/>\n");
tmp++;
}
}
virBufferEscapeString(buf, " <cmdline>%s</cmdline>\n", tmp);
}
- virBufferAdd(buf, " </os>\n", 8);
+ virBufferAddLit(buf, " </os>\n");
return(0);
}
if (hvm) {
int clockLocal;
- virBufferAdd(&buf, " <features>\n", 13);
+ virBufferAddLit(&buf, " <features>\n");
if (sexpr_int(root, "domain/image/hvm/acpi"))
- virBufferAdd(&buf, " <acpi/>\n", 12);
+ virBufferAddLit(&buf, " <acpi/>\n");
if (sexpr_int(root, "domain/image/hvm/apic"))
- virBufferAdd(&buf, " <apic/>\n", 12);
+ virBufferAddLit(&buf, " <apic/>\n");
if (sexpr_int(root, "domain/image/hvm/pae"))
- virBufferAdd(&buf, " <pae/>\n", 11);
- virBufferAdd(&buf, " </features>\n", 14);
+ virBufferAddLit(&buf, " <pae/>\n");
+ virBufferAddLit(&buf, " </features>\n");
clockLocal = sexpr_int(root, "domain/image/hvm/localtime");
virBufferVSprintf(&buf, " <clock offset='%s'/>\n", clockLocal ? "localtime" : "utc");
}
- virBufferAdd(&buf, " <devices>\n", 12);
+ virBufferAddLit(&buf, " <devices>\n");
/* in case of HVM we have devices emulation */
tmp = sexpr_node(root, "domain/image/hvm/device_model");
virBufferVSprintf(&buf, " <readonly/>\n");
else if ((mode != NULL) && (!strcmp(mode, "w!")))
virBufferVSprintf(&buf, " <shareable/>\n");
- virBufferAdd(&buf, " </disk>\n", 12);
+ virBufferAddLit(&buf, " </disk>\n");
bad_parse:
free(drvName);
virBufferVSprintf(&buf, " <script path='%s'/>\n",
tmp2);
- virBufferAdd(&buf, " </interface>\n", 17);
+ virBufferAddLit(&buf, " </interface>\n");
vif_index++;
} else if (sexpr_lookup(node, "device/vfb")) {
/* New style graphics config for PV guests in >= 3.0.4,
if (tmp && !strcmp(tmp, "sdl")) {
virBufferVSprintf(&buf, " <input type='mouse' bus='%s'/>\n", hvm ? "ps2": "xen");
- virBufferAdd(&buf, " <graphics type='sdl'/>\n", 27);
+ virBufferAddLit(&buf, " <graphics type='sdl'/>\n");
} else if (tmp && !strcmp(tmp, "vnc")) {
int port = xenStoreDomainGetVNCPort(conn, domid);
const char *listenAddr = sexpr_node(node, "device/vfb/vnclisten");
}
if (keymap)
virBufferVSprintf(&buf, " keymap='%s'", keymap);
- virBufferAdd(&buf, "/>\n", 3);
+ virBufferAddLit(&buf, "/>\n");
}
}
}
if (hvm) {
tmp = sexpr_node(root, "domain/image/hvm/fda");
if ((tmp != NULL) && (tmp[0] != 0)) {
- virBufferAdd(&buf, " <disk type='file' device='floppy'>\n", 39);
+ virBufferAddLit(&buf, " <disk type='file' device='floppy'>\n");
virBufferVSprintf(&buf, " <source file='%s'/>\n", tmp);
- virBufferAdd(&buf, " <target dev='fda'/>\n", 26);
- virBufferAdd(&buf, " </disk>\n", 12);
+ virBufferAddLit(&buf, " <target dev='fda'/>\n");
+ virBufferAddLit(&buf, " </disk>\n");
}
tmp = sexpr_node(root, "domain/image/hvm/fdb");
if ((tmp != NULL) && (tmp[0] != 0)) {
- virBufferAdd(&buf, " <disk type='file' device='floppy'>\n", 39);
+ virBufferAddLit(&buf, " <disk type='file' device='floppy'>\n");
virBufferVSprintf(&buf, " <source file='%s'/>\n", tmp);
- virBufferAdd(&buf, " <target dev='fdb'/>\n", 26);
- virBufferAdd(&buf, " </disk>\n", 12);
+ virBufferAddLit(&buf, " <target dev='fdb'/>\n");
+ virBufferAddLit(&buf, " </disk>\n");
}
/* Old style cdrom config from Xen <= 3.0.2 */
if (xendConfigVersion == 1) {
tmp = sexpr_node(root, "domain/image/hvm/cdrom");
if ((tmp != NULL) && (tmp[0] != 0)) {
- virBufferAdd(&buf, " <disk type='file' device='cdrom'>\n", 38);
- virBufferAdd(&buf, " <driver name='file'/>\n", 28);
+ virBufferAddLit(&buf, " <disk type='file' device='cdrom'>\n");
+ virBufferAddLit(&buf, " <driver name='file'/>\n");
virBufferVSprintf(&buf, " <source file='%s'/>\n", tmp);
- virBufferAdd(&buf, " <target dev='hdc'/>\n", 26);
- virBufferAdd(&buf, " <readonly/>\n", 18);
- virBufferAdd(&buf, " </disk>\n", 12);
+ virBufferAddLit(&buf, " <target dev='hdc'/>\n");
+ virBufferAddLit(&buf, " <readonly/>\n");
+ virBufferAddLit(&buf, " </disk>\n");
}
}
}
tmp = sexpr_node(node, "usbdevice");
if (tmp && *tmp) {
if (!strcmp(tmp, "tablet"))
- virBufferAdd(&buf, " <input type='tablet' bus='usb'/>\n", 37);
+ virBufferAddLit(&buf, " <input type='tablet' bus='usb'/>\n");
else if (!strcmp(tmp, "mouse"))
- virBufferAdd(&buf, " <input type='mouse' bus='usb'/>\n", 36);
+ virBufferAddLit(&buf, " <input type='mouse' bus='usb'/>\n");
}
}
}
}
if (keymap)
virBufferVSprintf(&buf, " keymap='%s'", keymap);
- virBufferAdd(&buf, "/>\n", 3);
+ virBufferAddLit(&buf, "/>\n");
}
}
if (tmp != NULL) {
if (tmp[0] == '1') {
virBufferVSprintf(&buf, " <input type='mouse' bus='%s'/>\n", hvm ? "ps2" : "xen");
- virBufferAdd(&buf, " <graphics type='sdl'/>\n", 27 );
+ virBufferAddLit(&buf, " <graphics type='sdl'/>\n");
}
}
}
free(tty);
}
- virBufferAdd(&buf, " </devices>\n", 13);
- virBufferAdd(&buf, "</domain>\n", 10);
+ virBufferAddLit(&buf, " </devices>\n");
+ virBufferAddLit(&buf, "</domain>\n");
buf.content[buf.use] = 0;
return (buf.content);
r = virParseXenCpuTopology(conn, xml, nodeToCpu, numCpus);
if (r < 0) goto error;
- r = virBufferAdd (xml, "\
+ r = virBufferAddLit (xml, "\
</cells>\n\
- </topology>\n", -1);
+ </topology>\n");
if (r < 0) goto vir_buffer_failed;
return (0);
buf = virBufferNew(4096);
- virBufferAdd(buf, "<domain type='xen'>\n", -1);
+ virBufferAddLit(buf, "<domain type='xen'>\n");
virBufferVSprintf(buf, " <name>%s</name>\n", name);
virUUIDFormat(uuid, uuidstr);
virBufferVSprintf(buf, " <uuid>%s</uuid>\n", uuidstr);
if (hvm) {
const char *boot;
- virBufferAdd(buf, " <os>\n", -1);
- virBufferAdd(buf, " <type>hvm</type>\n", -1);
+ virBufferAddLit(buf, " <os>\n");
+ virBufferAddLit(buf, " <type>hvm</type>\n");
if (xenXMConfigGetString(conf, "kernel", &str) == 0)
virBufferVSprintf(buf, " <loader>%s</loader>\n", str);
boot++;
}
- virBufferAdd(buf, " </os>\n", -1);
+ virBufferAddLit(buf, " </os>\n");
} else {
if (xenXMConfigGetString(conf, "bootloader", &str) == 0)
if (xenXMConfigGetString(conf, "bootargs", &str) == 0)
virBufferEscapeString(buf, " <bootloader_args>%s</bootloader_args>\n", str);
if (xenXMConfigGetString(conf, "kernel", &str) == 0) {
- virBufferAdd(buf, " <os>\n", -1);
- virBufferAdd(buf, " <type>linux</type>\n", -1);
+ virBufferAddLit(buf, " <os>\n");
+ virBufferAddLit(buf, " <type>linux</type>\n");
virBufferVSprintf(buf, " <kernel>%s</kernel>\n", str);
if (xenXMConfigGetString(conf, "ramdisk", &str) == 0)
virBufferVSprintf(buf, " <initrd>%s</initrd>\n", str);
if (xenXMConfigGetString(conf, "extra", &str) == 0)
virBufferEscapeString(buf, " <cmdline>%s</cmdline>\n", str);
- virBufferAdd(buf, " </os>\n", -1);
+ virBufferAddLit(buf, " </os>\n");
}
}
if (hvm) {
- virBufferAdd(buf, " <features>\n", -1);
+ virBufferAddLit(buf, " <features>\n");
if (xenXMConfigGetInt(conf, "pae", &val) == 0 &&
val)
- virBufferAdd(buf, " <pae/>\n", -1);
+ virBufferAddLit(buf, " <pae/>\n");
if (xenXMConfigGetInt(conf, "acpi", &val) == 0 &&
val)
- virBufferAdd(buf, " <acpi/>\n", -1);
+ virBufferAddLit(buf, " <acpi/>\n");
if (xenXMConfigGetInt(conf, "apic", &val) == 0 &&
val)
- virBufferAdd(buf, " <apic/>\n", -1);
- virBufferAdd(buf, " </features>\n", -1);
+ virBufferAddLit(buf, " <apic/>\n");
+ virBufferAddLit(buf, " </features>\n");
if (xenXMConfigGetInt(conf, "localtime", &val) < 0)
val = 0;
virBufferVSprintf(buf, " <clock offset='%s'/>\n", val ? "localtime" : "utc");
}
- virBufferAdd(buf, " <devices>\n", -1);
+ virBufferAddLit(buf, " <devices>\n");
if (hvm) {
if (xenXMConfigGetString(conf, "device_model", &str) == 0)
virBufferVSprintf(buf, " <target dev='%s'/>\n", dev);
if (!strcmp(head, "r") ||
!strcmp(head, "ro"))
- virBufferAdd(buf, " <readonly/>\n", -1);
+ virBufferAddLit(buf, " <readonly/>\n");
else if ((!strcmp(head, "w!")) ||
(!strcmp(head, "!")))
- virBufferAdd(buf, " <shareable/>\n", -1);
- virBufferAdd(buf, " </disk>\n", -1);
+ virBufferAddLit(buf, " <shareable/>\n");
+ virBufferAddLit(buf, " </disk>\n");
skipdisk:
list = list->next;
if (hvm && priv->xendConfigVersion == 1) {
if (xenXMConfigGetString(conf, "cdrom", &str) == 0) {
- virBufferAdd(buf, " <disk type='file' device='cdrom'>\n", -1);
- virBufferAdd(buf, " <driver name='file'/>\n", -1);
+ virBufferAddLit(buf, " <disk type='file' device='cdrom'>\n");
+ virBufferAddLit(buf, " <driver name='file'/>\n");
virBufferVSprintf(buf, " <source file='%s'/>\n", str);
- virBufferAdd(buf, " <target dev='hdc'/>\n", -1);
- virBufferAdd(buf, " <readonly/>\n", -1);
- virBufferAdd(buf, " </disk>\n", -1);
+ virBufferAddLit(buf, " <target dev='hdc'/>\n");
+ virBufferAddLit(buf, " <readonly/>\n");
+ virBufferAddLit(buf, " </disk>\n");
}
}
type = 1;
}
- virBufferAdd(buf, " <interface type='bridge'>\n", -1);
+ virBufferAddLit(buf, " <interface type='bridge'>\n");
if (mac[0])
virBufferVSprintf(buf, " <mac address='%s'/>\n", mac);
if (type == 1 && bridge[0])
virBufferVSprintf(buf, " <script path='%s'/>\n", script);
if (ip[0])
virBufferVSprintf(buf, " <ip address='%s'/>\n", ip);
- virBufferAdd(buf, " </interface>\n", -1);
+ virBufferAddLit(buf, " </interface>\n");
skipnic:
list = list->next;
if (hvm) {
if (xenXMConfigGetString(conf, "usbdevice", &str) == 0 && str) {
if (!strcmp(str, "tablet"))
- virBufferAdd(buf, " <input type='tablet' bus='usb'/>\n", 37);
+ virBufferAddLit(buf, " <input type='tablet' bus='usb'/>\n");
else if (!strcmp(str, "mouse"))
- virBufferAdd(buf, " <input type='mouse' bus='usb'/>\n", 36);
+ virBufferAddLit(buf, " <input type='mouse' bus='usb'/>\n");
/* Ignore else branch - probably some other non-input device we don't
support in libvirt yet */
}
if (keymap) {
virBufferVSprintf(buf, " keymap='%s'", keymap);
}
- virBufferAdd(buf, "/>\n", 3);
+ virBufferAddLit(buf, "/>\n");
}
if (sdl) {
- virBufferAdd(buf, " <graphics type='sdl'/>\n", -1);
+ virBufferAddLit(buf, " <graphics type='sdl'/>\n");
}
if (hvm) {
if (xenXMConfigGetString(conf, "serial", &str) == 0 && !strcmp(str, "pty")) {
- virBufferAdd(buf, " <console/>\n", -1);
+ virBufferAddLit(buf, " <console/>\n");
}
} else { /* Paravirt implicitly always has a console */
- virBufferAdd(buf, " <console/>\n", -1);
+ virBufferAddLit(buf, " <console/>\n");
}
- virBufferAdd(buf, " </devices>\n", -1);
+ virBufferAddLit(buf, " </devices>\n");
- virBufferAdd(buf, "</domain>\n", -1);
+ virBufferAddLit(buf, "</domain>\n");
xml = buf->content;
buf->content = NULL;
n = i*8 + j;
if (comma) {
- if (virBufferAdd (mapbuf, ",", 1) == -1) {
+ if (virBufferAddLit (mapbuf, ",") == -1) {
xenXMError (domain->conn, VIR_ERR_NO_MEMORY, __FUNCTION__);
virBufferFree (mapbuf);
return -1;
start = cur;
} else if (start != -1) {
if (!first)
- virBufferAdd(buf, ",", -1);
+ virBufferAddLit(buf, ",");
else
first = 0;
if (cur == start + 1)
}
if (start != -1) {
if (!first)
- virBufferAdd(buf, ",", -1);
+ virBufferAddLit(buf, ",");
if (maxcpu == start + 1)
virBufferVSprintf(buf, "%d", start);
else
goto memory_error;
}
}
- ret = virBufferAdd(xml, "\
+ ret = virBufferAddLit(xml, "\
</cpus>\n\
- </cell>\n", -1);
+ </cell>\n");
if (ret < 0)
goto memory_error;
graphics_type = xmlGetProp(node, BAD_CAST "type");
if (graphics_type != NULL) {
if (xmlStrEqual(graphics_type, BAD_CAST "sdl")) {
- virBufferAdd(buf, "(sdl 1)", 7);
+ virBufferAddLit(buf, "(sdl 1)", 7);
/* TODO:
* Need to understand sdl options
*
- *virBufferAdd(buf, "(display localhost:10.0)", 24);
- *virBufferAdd(buf, "(xauthority /root/.Xauthority)", 30);
+ *virBufferAddLit(buf, "(display localhost:10.0)");
+ *virBufferAddLit(buf, "(xauthority /root/.Xauthority)");
*/
} else if (xmlStrEqual(graphics_type, BAD_CAST "vnc")) {
- virBufferAdd(buf, "(vnc 1)", 7);
+ virBufferAddLit(buf, "(vnc 1)");
if (xendConfigVersion >= 2) {
xmlChar *vncport = xmlGetProp(node, BAD_CAST "port");
xmlChar *vnclisten = xmlGetProp(node, BAD_CAST "listen");
long port = strtol((const char *) vncport, NULL, 10);
if (port == -1)
- virBufferAdd(buf, "(vncunused 1)", 13);
+ virBufferAddLit(buf, "(vncunused 1)");
else if (port >= 5900)
virBufferVSprintf(buf, "(vncdisplay %ld)",
port - 5900);
graphics_type = xmlGetProp(node, BAD_CAST "type");
if (graphics_type != NULL) {
- virBufferAdd(buf, "(device (vkbd))", 15);
- virBufferAdd(buf, "(device (vfb ", 13);
+ virBufferAddLit(buf, "(device (vkbd))");
+ virBufferAddLit(buf, "(device (vfb ");
if (xmlStrEqual(graphics_type, BAD_CAST "sdl")) {
- virBufferAdd(buf, "(type sdl)", 10);
+ virBufferAddLit(buf, "(type sdl)");
/* TODO:
* Need to understand sdl options
*
- *virBufferAdd(buf, "(display localhost:10.0)", 24);
- *virBufferAdd(buf, "(xauthority /root/.Xauthority)", 30);
+ *virBufferAddLit(buf, "(display localhost:10.0)");
+ *virBufferAddLit(buf, "(xauthority /root/.Xauthority)");
*/
} else if (xmlStrEqual(graphics_type, BAD_CAST "vnc")) {
- virBufferAdd(buf, "(type vnc)", 10);
+ virBufferAddLit(buf, "(type vnc)");
xmlChar *vncport = xmlGetProp(node, BAD_CAST "port");
xmlChar *vnclisten = xmlGetProp(node, BAD_CAST "listen");
xmlChar *vncpasswd = xmlGetProp(node, BAD_CAST "passwd");
long port = strtol((const char *) vncport, NULL, 10);
if (port == -1)
- virBufferAdd(buf, "(vncunused 1)", 13);
+ virBufferAddLit(buf, "(vncunused 1)");
else if (port >= 5900)
virBufferVSprintf(buf, "(vncdisplay %ld)",
port - 5900);
xmlFree(keymap);
}
}
- virBufferAdd(buf, "))", 2);
+ virBufferAddLit(buf, "))");
xmlFree(graphics_type);
}
return 0;
virXMLError(conn, VIR_ERR_OS_TYPE, (const char *) type, 0);
return (-1);
}
- virBufferAdd(buf, "(image (hvm ", 12);
+ virBufferAddLit(buf, "(image (hvm ");
if (loader == NULL) {
virXMLError(conn, VIR_ERR_NO_KERNEL, NULL, 0);
goto error;
}
if (virXPathNode("/domain/features/acpi", ctxt) != NULL)
- virBufferAdd(buf, "(acpi 1)", 8);
+ virBufferAddLit(buf, "(acpi 1)");
if (virXPathNode("/domain/features/apic", ctxt) != NULL)
- virBufferAdd(buf, "(apic 1)", 8);
+ virBufferAddLit(buf, "(apic 1)");
if (virXPathNode("/domain/features/pae", ctxt) != NULL)
- virBufferAdd(buf, "(pae 1)", 7);
+ virBufferAddLit(buf, "(pae 1)");
- virBufferAdd(buf, "(usb 1)", 7);
+ virBufferAddLit(buf, "(usb 1)");
nb_nodes = virXPathNodeSet("/domain/devices/input", ctxt, &nodes);
if (nb_nodes > 0) {
int i;
if (!isMouse) {
/* Nothing - implicit ps2 */
} else {
- virBufferAdd(buf, "(usbdevice tablet)", 13);
+ virBufferAddLit(buf, "(usbdevice tablet)");
}
} else {
if (!strcmp((const char *) bus, "ps2")) {
/* Nothing - implicit ps2 */
} else if (!strcmp((const char *) bus, "usb")) {
if (isMouse)
- virBufferAdd(buf, "(usbdevice mouse)", 17);
+ virBufferAddLit(buf, "(usbdevice mouse)");
else
- virBufferAdd(buf, "(usbdevice tablet)", 18);
+ virBufferAddLit(buf, "(usbdevice tablet)");
}
}
xmlFree(bus);
goto error;
}
if (res) {
- virBufferAdd(buf, "(serial pty)", 12);
+ virBufferAddLit(buf, "(serial pty)");
}
/* HVM graphics for xen <= 3.0.5 */
str = virXPathString("string(/domain/clock/@offset)", ctxt);
if (str != NULL && !strcmp(str, "localtime")) {
- virBufferAdd(buf, "(localtime 1)", 13);
+ virBufferAddLit(buf, "(localtime 1)");
}
free(str);
- virBufferAdd(buf, "))", 2);
+ virBufferAddLit(buf, "))");
return (0);
virXMLError(conn, VIR_ERR_OS_TYPE, (const char *) type, 0);
return (-1);
}
- virBufferAdd(buf, "(image (linux ", 14);
+ virBufferAddLit(buf, "(image (linux ");
if (kernel == NULL) {
virXMLError(conn, VIR_ERR_NO_KERNEL, NULL, 0);
return (-1);
}
error:
- virBufferAdd(buf, "))", 2);
+ virBufferAddLit(buf, "))");
return (0);
}
}
- virBufferAdd(buf, "(device ", 8);
+ virBufferAddLit(buf, "(device ");
/* Normally disks are in a (device (vbd ...)) block
* but blktap disks ended up in a differently named
* (device (tap ....)) block.... */
if (drvName && !strcmp((const char *) drvName, "tap")) {
- virBufferAdd(buf, "(tap ", 5);
+ virBufferAddLit(buf, "(tap ");
} else {
- virBufferAdd(buf, "(vbd ", 5);
+ virBufferAddLit(buf, "(vbd ");
}
if (hvm) {
else
virBufferVSprintf(buf, "(mode 'w')");
- virBufferAdd(buf, ")", 1);
- virBufferAdd(buf, ")", 1);
+ virBufferAddLit(buf, ")");
+ virBufferAddLit(buf, ")");
cleanup:
if (drvType)
cur = cur->next;
}
- virBufferAdd(buf, "(vif ", 5);
+ virBufferAddLit(buf, "(vif ");
if (mac != NULL) {
unsigned int addr[12];
int tmp = sscanf((const char *) mac,
* from Xen 3.1.0
*/
if ((hvm) && (xendConfigVersion < 4))
- virBufferAdd(buf, "(type ioemu)", 12);
+ virBufferAddLit(buf, "(type ioemu)");
- virBufferAdd(buf, ")", 1);
+ virBufferAddLit(buf, ")");
ret = 0;
error:
if (mac != NULL)
}
xmlFree(prop);
}
- virBufferAdd(&buf, "(vm ", 4);
+ virBufferAddLit(&buf, "(vm ");
ctxt = xmlXPathNewContext(xml);
if (ctxt == NULL) {
goto error;
nb_nodes = virXPathNodeSet("/domain/devices/interface", ctxt, &nodes);
if (nb_nodes > 0) {
for (i = 0; i < nb_nodes; i++) {
- virBufferAdd(&buf, "(device ", 8);
+ virBufferAddLit(&buf, "(device ");
res =
virDomainParseXMLIfDesc(conn, nodes[i], &buf, hvm,
xendConfigVersion);
free(nodes);
goto error;
}
- virBufferAdd(&buf, ")", 1);
+ virBufferAddLit(&buf, ")");
}
free(nodes);
}
}
- virBufferAdd(&buf, ")", 1); /* closes (vm */
+ virBufferAddLit(&buf, ")"); /* closes (vm */
buf.content[buf.use] = 0;
xmlXPathFreeContext(ctxt);