From fb66d5ab92857dfae73f779b5a5b7ab2512ddcda Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Tue, 5 Feb 2008 14:22:28 +0000 Subject: [PATCH] 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. --- ChangeLog | 22 ++++++++++++ Makefile.maint | 5 +++ src/buf.h | 5 ++- src/conf.c | 14 ++++---- src/qemu_conf.c | 50 +++++++++++++-------------- src/qemu_driver.c | 34 +++++++++--------- src/test.c | 14 ++++---- src/xen_internal.c | 42 +++++++++++------------ src/xend_internal.c | 70 ++++++++++++++++++------------------- src/xm_internal.c | 64 +++++++++++++++++----------------- src/xml.c | 84 ++++++++++++++++++++++----------------------- 11 files changed, 217 insertions(+), 187 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1a50c65791..59c21561f8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,25 @@ +Tue Feb 3 15:21:45 CET 2008 Jim Meyering + + 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 Enable more checks for unmarked messages; fix violators. diff --git a/Makefile.maint b/Makefile.maint index 356ca739dc..923c422d64 100644 --- a/Makefile.maint +++ b/Makefile.maint @@ -304,6 +304,11 @@ sc_unmarked_diagnostics: { echo '$(ME): found unmarked diagnostic(s)' 1>&2; \ exit 1; } || : +sc_prohibit_virBufferAdd_with_string_literal: + @grep -nE '\&2; exit 1; } || : + # Avoid useless parentheses like those in this example: # #if defined (SYMBOL) || defined (SYM2) sc_useless_cpp_parens: diff --git a/src/buf.h b/src/buf.h index 8826617fe6..275cd40f44 100644 --- a/src/buf.h +++ b/src/buf.h @@ -1,7 +1,7 @@ /* * 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 * @@ -37,4 +37,7 @@ int virBufferStrcat(virBufferPtr buf, ...); 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__ */ diff --git a/src/conf.c b/src/conf.c index d4e52277d9..67c9c6ebbc 100644 --- a/src/conf.c +++ b/src/conf.c @@ -264,17 +264,17 @@ virConfSaveValue(virBufferPtr buf, virConfValuePtr val) 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: @@ -297,17 +297,17 @@ virConfSaveEntry(virBufferPtr buf, virConfEntryPtr cur) { 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); } diff --git a/src/qemu_conf.c b/src/qemu_conf.c index 6dc08e0104..d6e3b770b3 100644 --- a/src/qemu_conf.c +++ b/src/qemu_conf.c @@ -2714,7 +2714,7 @@ char *qemudGenerateXML(virConnectPtr conn, if (virBufferVSprintf(buf, " %d\n", def->vcpus) < 0) goto no_memory; - if (virBufferAdd(buf, " \n", -1) < 0) + if (virBufferAddLit(buf, " \n") < 0) goto no_memory; if (def->virtType == QEMUD_VIRT_QEMU) { @@ -2756,33 +2756,33 @@ char *qemudGenerateXML(virConnectPtr conn, goto no_memory; } - if (virBufferAdd(buf, " \n", -1) < 0) + if (virBufferAddLit(buf, " \n") < 0) goto no_memory; if (def->features & QEMUD_FEATURE_ACPI) { - if (virBufferAdd(buf, " \n", -1) < 0) + if (virBufferAddLit(buf, " \n") < 0) goto no_memory; - if (virBufferAdd(buf, " \n", -1) < 0) + if (virBufferAddLit(buf, " \n") < 0) goto no_memory; - if (virBufferAdd(buf, " \n", -1) < 0) + if (virBufferAddLit(buf, " \n") < 0) goto no_memory; } virBufferVSprintf(buf, " \n", def->localtime ? "localtime" : "utc"); - if (virBufferAdd(buf, " destroy\n", -1) < 0) + if (virBufferAddLit(buf, " destroy\n") < 0) goto no_memory; if (def->noReboot) { - if (virBufferAdd(buf, " destroy\n", -1) < 0) + if (virBufferAddLit(buf, " destroy\n") < 0) goto no_memory; } else { - if (virBufferAdd(buf, " restart\n", -1) < 0) + if (virBufferAddLit(buf, " restart\n") < 0) goto no_memory; } - if (virBufferAdd(buf, " destroy\n", -1) < 0) + if (virBufferAddLit(buf, " destroy\n") < 0) goto no_memory; - if (virBufferAdd(buf, " \n", -1) < 0) + if (virBufferAddLit(buf, " \n") < 0) goto no_memory; if (virBufferVSprintf(buf, " %s\n", def->os.binary) < 0) @@ -2814,7 +2814,7 @@ char *qemudGenerateXML(virConnectPtr conn, goto no_memory; if (disk->readonly) - if (virBufferAdd(buf, " \n", -1) < 0) + if (virBufferAddLit(buf, " \n") < 0) goto no_memory; if (virBufferVSprintf(buf, " \n") < 0) @@ -2904,12 +2904,12 @@ char *qemudGenerateXML(virConnectPtr conn, } /* If graphics is enable, add implicit mouse */ if (def->graphicsType != QEMUD_GRAPHICS_NONE) - if (virBufferAdd(buf, " \n", -1) < 0) + if (virBufferAddLit(buf, " \n") < 0) goto no_memory; switch (def->graphicsType) { case QEMUD_GRAPHICS_VNC: - if (virBufferAdd(buf, " vncPort && @@ -2927,12 +2927,12 @@ char *qemudGenerateXML(virConnectPtr conn, 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, " \n", -1) < 0) + if (virBufferAddLit(buf, " \n") < 0) goto no_memory; break; @@ -2944,11 +2944,11 @@ char *qemudGenerateXML(virConnectPtr conn, if (def->graphicsType == QEMUD_GRAPHICS_VNC) { } - if (virBufferAdd(buf, " \n", -1) < 0) + if (virBufferAddLit(buf, " \n") < 0) goto no_memory; - if (virBufferAdd(buf, "\n", -1) < 0) + if (virBufferAddLit(buf, "\n") < 0) goto no_memory; return virBufferContentAndFree (buf); @@ -2989,11 +2989,11 @@ char *qemudGenerateNetworkXML(virConnectPtr conn, virBufferVSprintf(buf, " \n", def->forwardDev); } else { - virBufferAdd(buf, " \n", -1); + virBufferAddLit(buf, " \n"); } } - virBufferAdd(buf, " bridge) < 0) goto no_memory; @@ -3007,7 +3007,7 @@ char *qemudGenerateNetworkXML(virConnectPtr conn, goto no_memory; if (def->ipAddress[0] || def->netmask[0]) { - if (virBufferAdd(buf, " ipAddress[0] && @@ -3018,12 +3018,12 @@ char *qemudGenerateNetworkXML(virConnectPtr conn, 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, " \n", -1) < 0) + if (virBufferAddLit(buf, " \n") < 0) goto no_memory; while (range) { if (virBufferVSprintf(buf, " \n", @@ -3031,15 +3031,15 @@ char *qemudGenerateNetworkXML(virConnectPtr conn, goto no_memory; range = range->next; } - if (virBufferAdd(buf, " \n", -1) < 0) + if (virBufferAddLit(buf, " \n") < 0) goto no_memory; } - if (virBufferAdd(buf, " \n", -1) < 0) + if (virBufferAddLit(buf, " \n") < 0) goto no_memory; } - if (virBufferAdd(buf, "\n", -1) < 0) + if (virBufferAddLit(buf, "\n") < 0) goto no_memory; return virBufferContentAndFree (buf); diff --git a/src/qemu_driver.c b/src/qemu_driver.c index f80a121a9c..3151574205 100644 --- a/src/qemu_driver.c +++ b/src/qemu_driver.c @@ -1,7 +1,7 @@ /* * 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 @@ -1459,19 +1459,19 @@ static int qemudGetFeatures(virBufferPtr xml, if (flags == NULL) return 0; - r = virBufferAdd(xml, "\ - \n", -1); + r = virBufferAddLit(xml, "\ + \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, " \n", -1); + r = virBufferAddLit(xml, " \n"); if (r == -1) return r; } if (nonpae) { - r = virBufferAdd(xml, " \n", -1); + r = virBufferAddLit(xml, " \n"); if (r == -1) return r; } } else { @@ -1482,7 +1482,7 @@ static int qemudGetFeatures(virBufferPtr xml, if (r == -1) return r; } } - r = virBufferAdd(xml, " \n", -1); + r = virBufferAddLit(xml, " \n"); return r; } @@ -1550,26 +1550,26 @@ static char *qemudGetCapabilities(virConnectPtr conn ATTRIBUTE_UNUSED) { } if (have_kqemu) { - r = virBufferAdd (xml, + r = virBufferAddLit (xml, "\ - \n", -1); + \n"); if (r == -1) goto vir_buffer_failed; } if (have_kvm) { - r = virBufferAdd (xml, + r = virBufferAddLit (xml, "\ \n\ /usr/bin/qemu-kvm\n\ - \n", -1); + \n"); if (r == -1) goto vir_buffer_failed; } - r = virBufferAdd (xml, " \n", -1); + r = virBufferAddLit (xml, " \n"); if (r == -1) goto vir_buffer_failed; r = qemudGetFeatures(xml, qemudArchs[i].fflags); if (r == -1) goto vir_buffer_failed; - r = virBufferAdd (xml, " \n", -1); + r = virBufferAddLit (xml, " \n"); if (r == -1) goto vir_buffer_failed; /* The "other" PC architecture needs emulation. */ @@ -1594,7 +1594,7 @@ static char *qemudGetCapabilities(virConnectPtr conn ATTRIBUTE_UNUSED) { qemudArchs[i].machines[j]); if (r == -1) goto vir_buffer_failed; } - r = virBufferAdd (xml, " \n \n", -1); + r = virBufferAddLit (xml, " \n \n"); if (r == -1) goto vir_buffer_failed; } @@ -1620,20 +1620,20 @@ static char *qemudGetCapabilities(virConnectPtr conn ATTRIBUTE_UNUSED) { qemudArchs[i].machines[j]); if (r == -1) goto vir_buffer_failed; } - r = virBufferAdd (xml, " \n", -1); + r = virBufferAddLit (xml, " \n"); if (r == -1) goto vir_buffer_failed; r = qemudGetFeatures(xml, qemudArchs[i].fflags); if (r == -1) goto vir_buffer_failed; - r = virBufferAdd (xml, " \n", -1); + r = virBufferAddLit (xml, " \n"); if (r == -1) goto vir_buffer_failed; } /* Finish off. */ - r = virBufferAdd (xml, + r = virBufferAddLit (xml, "\ -\n", -1); +\n"); if (r == -1) goto vir_buffer_failed; return virBufferContentAndFree(xml); diff --git a/src/test.c b/src/test.c index ab83f6545e..003d6b710b 100644 --- a/src/test.c +++ b/src/test.c @@ -1492,7 +1492,7 @@ static char *testDomainDumpXML(virDomainPtr domain, int flags ATTRIBUTE_UNUSED) virBufferVSprintf(buf, " %s\n", testRestartFlagToString(privdom->onPoweroff)); virBufferVSprintf(buf, " %s\n", testRestartFlagToString(privdom->onCrash)); - virBufferAdd(buf, "\n", -1); + virBufferAddLit(buf, "\n"); xml = buf->content; free(buf); @@ -1863,7 +1863,7 @@ static char *testNetworkDumpXML(virNetworkPtr network, int flags ATTRIBUTE_UNUSE return (NULL); } - virBufferAdd(buf, "\n", -1); + virBufferAddLit(buf, "\n"); virBufferVSprintf(buf, " %s\n", network->name); uuid = network->uuid; virUUIDFormat(uuid, uuidstr); @@ -1873,18 +1873,18 @@ static char *testNetworkDumpXML(virNetworkPtr network, int flags ATTRIBUTE_UNUSE if (privnet->forwardDev[0]) virBufferVSprintf(buf, " \n", privnet->forwardDev); else - virBufferAdd(buf, " \n", -1); + virBufferAddLit(buf, " \n"); } virBufferVSprintf(buf, " \n", privnet->ipAddress, privnet->ipNetmask); - virBufferAdd(buf, " \n", -1); + virBufferAddLit(buf, " \n"); virBufferVSprintf(buf, " \n", privnet->dhcpStart, privnet->dhcpEnd); - virBufferAdd(buf, " \n", -1); - virBufferAdd(buf, " \n", -1); + virBufferAddLit(buf, " \n"); + virBufferAddLit(buf, " \n"); - virBufferAdd(buf, "\n", -1); + virBufferAddLit(buf, "\n"); xml = buf->content; free(buf); diff --git a/src/xen_internal.c b/src/xen_internal.c index 1292382ef3..1ddff85139 100644 --- a/src/xen_internal.c +++ b/src/xen_internal.c @@ -1,7 +1,7 @@ /* * 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 * @@ -2330,11 +2330,11 @@ xenHypervisorMakeCapabilitiesXML(virConnectPtr conn, if (r == -1) goto vir_buffer_failed; } if (host_pae) { - r = virBufferAdd (xml, "\ - \n", -1); + r = virBufferAddLit (xml, "\ + \n"); if (r == -1) goto vir_buffer_failed; } - r = virBufferAdd (xml, + r = virBufferAddLit (xml, "\ \n\ \n\ @@ -2344,7 +2344,7 @@ xenHypervisorMakeCapabilitiesXML(virConnectPtr conn, xenmigr\n\ \n\ \n\ - \n", -1); + \n"); if (r == -1) goto vir_buffer_failed; if (sys_interface_version >= 4) { @@ -2376,48 +2376,48 @@ xenHypervisorMakeCapabilitiesXML(virConnectPtr conn, guest_archs[i].bits == 64 ? "64" : ""); if (r == -1) goto vir_buffer_failed; } - r = virBufferAdd (xml, + r = virBufferAddLit (xml, "\ \n\ - \n", -1); + \n"); if (r == -1) goto vir_buffer_failed; if (guest_archs[i].pae) { - r = virBufferAdd (xml, + r = virBufferAddLit (xml, "\ - \n", -1); + \n"); if (r == -1) goto vir_buffer_failed; } if (guest_archs[i].nonpae) { - r = virBufferAdd (xml, " \n", -1); + r = virBufferAddLit (xml, " \n"); if (r == -1) goto vir_buffer_failed; } if (guest_archs[i].ia64_be) { - r = virBufferAdd (xml, " \n", -1); + r = virBufferAddLit (xml, " \n"); if (r == -1) goto vir_buffer_failed; } if (guest_archs[i].hvm) { - r = virBufferAdd (xml, " \n", - -1); + r = virBufferAddLit (xml, + " \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, - " \n", -1); + r = virBufferAddLit (xml, + " \n"); } else { - r = virBufferAdd (xml, - " \n", -1); + r = virBufferAddLit (xml, + " \n"); } if (r == -1) goto vir_buffer_failed; } - r = virBufferAdd (xml, "\ + r = virBufferAddLit (xml, "\ \n\ - \n", -1); + \n"); if (r == -1) goto vir_buffer_failed; } - r = virBufferAdd (xml, + r = virBufferAddLit (xml, "\ -\n", -1); +\n"); if (r == -1) goto vir_buffer_failed; xml_str = strdup (xml->content); if (!xml_str) goto vir_buffer_failed; diff --git a/src/xend_internal.c b/src/xend_internal.c index 78691c9236..9a79591891 100644 --- a/src/xend_internal.c +++ b/src/xend_internal.c @@ -1286,7 +1286,7 @@ xend_parse_sexp_desc_os(virConnectPtr xend, struct sexpr *node, virBufferPtr buf return(-1); } - virBufferAdd(buf, " \n", 7); + virBufferAddLit(buf, " \n"); if (hvm) { virBufferVSprintf(buf, " hvm\n"); tmp = sexpr_node(node, "domain/image/hvm/kernel"); @@ -1304,7 +1304,7 @@ xend_parse_sexp_desc_os(virConnectPtr xend, struct sexpr *node, virBufferPtr buf while (*tmp) { if (*tmp == 'a') /* XXX no way to deal with boot from 2nd floppy */ - virBufferAdd(buf, " \n", 21 ); + virBufferAddLit(buf, " \n"); else if (*tmp == 'c') /* * Don't know what to put here. Say the vm has been given 3 @@ -1312,11 +1312,11 @@ xend_parse_sexp_desc_os(virConnectPtr xend, struct sexpr *node, virBufferPtr buf * We're going to assume that first disk is the boot disk since * this is most common practice */ - virBufferAdd(buf, " \n", 21 ); + virBufferAddLit(buf, " \n"); else if (*tmp == 'd') - virBufferAdd(buf, " \n", 24 ); + virBufferAddLit(buf, " \n"); else if (*tmp == 'n') - virBufferAdd(buf, " \n", 26 ); + virBufferAddLit(buf, " \n"); tmp++; } } @@ -1341,7 +1341,7 @@ xend_parse_sexp_desc_os(virConnectPtr xend, struct sexpr *node, virBufferPtr buf virBufferEscapeString(buf, " %s\n", tmp); } - virBufferAdd(buf, " \n", 8); + virBufferAddLit(buf, " \n"); return(0); } @@ -1472,20 +1472,20 @@ xend_parse_sexp_desc(virConnectPtr conn, struct sexpr *root, if (hvm) { int clockLocal; - virBufferAdd(&buf, " \n", 13); + virBufferAddLit(&buf, " \n"); if (sexpr_int(root, "domain/image/hvm/acpi")) - virBufferAdd(&buf, " \n", 12); + virBufferAddLit(&buf, " \n"); if (sexpr_int(root, "domain/image/hvm/apic")) - virBufferAdd(&buf, " \n", 12); + virBufferAddLit(&buf, " \n"); if (sexpr_int(root, "domain/image/hvm/pae")) - virBufferAdd(&buf, " \n", 11); - virBufferAdd(&buf, " \n", 14); + virBufferAddLit(&buf, " \n"); + virBufferAddLit(&buf, " \n"); clockLocal = sexpr_int(root, "domain/image/hvm/localtime"); virBufferVSprintf(&buf, " \n", clockLocal ? "localtime" : "utc"); } - virBufferAdd(&buf, " \n", 12); + virBufferAddLit(&buf, " \n"); /* in case of HVM we have devices emulation */ tmp = sexpr_node(root, "domain/image/hvm/device_model"); @@ -1636,7 +1636,7 @@ xend_parse_sexp_desc(virConnectPtr conn, struct sexpr *root, virBufferVSprintf(&buf, " \n"); else if ((mode != NULL) && (!strcmp(mode, "w!"))) virBufferVSprintf(&buf, " \n"); - virBufferAdd(&buf, " \n", 12); + virBufferAddLit(&buf, " \n"); bad_parse: free(drvName); @@ -1673,7 +1673,7 @@ xend_parse_sexp_desc(virConnectPtr conn, struct sexpr *root, virBufferVSprintf(&buf, "