<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://blog.gmane.org/gmane.comp.emulators.libvirt">
    <title>gmane.comp.emulators.libvirt</title>
    <link>http://blog.gmane.org/gmane.comp.emulators.libvirt</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79252"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79251"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79250"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79249"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79247"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79246"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79245"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79244"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79243"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79242"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79241"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79240"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79239"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79238"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79237"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79236"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79235"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79234"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79233"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79232"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79252">
    <title>[libvirt] [PATCH 0/2] More semicolon cleanups</title>
    <link>http://permalink.gmane.org/gmane.comp.emulators.libvirt/79252</link>
    <description>&lt;pre&gt;In response to:
https://www.redhat.com/archives/libvir-list/2013-May/msg01791.html

Eric Blake (2):
  syntax: prefer space after semicolon in for loop
  syntax-check: mandate space after mid-line semicolon

 HACKING                       | 23 +++++++++++++++++++++++
 build-aux/bracket-spacing.pl  | 12 ++++++++++++
 cfg.mk                        |  2 +-
 docs/hacking.html.in          | 29 +++++++++++++++++++++++++++++
 examples/domsuspend/suspend.c |  2 +-
 python/libvirt-override.c     | 38 +++++++++++++++++++-------------------
 src/conf/interface_conf.c     | 14 +++++++-------
 src/security/virt-aa-helper.c |  2 +-
 src/util/virconf.c            |  4 ++--
 src/util/virhook.c            |  2 +-
 src/util/virlog.c             | 10 +++++-----
 src/util/virsocketaddr.c      | 12 ++++++------
 src/util/virsysinfo.c         |  4 ++--
 src/util/viruuid.c            |  4 ++--
 src/vbox/vbox_tmpl.c          | 11 ++++++++---
 src/xen/xen_hypervisor.c      |  3 ++-
 tools/virsh-domain-monitor.c  |  6 +++---
 tools/virsh-domain.c          |  6 +++---
 18 files changed, 127 insertions(+), 57 deletions(-)

&lt;/pre&gt;</description>
    <dc:creator>Eric Blake</dc:creator>
    <dc:date>2013-05-24T17:19:35</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79251">
    <title>[libvirt] [PATCH 1/2] syntax: prefer space after semicolon in forloop</title>
    <link>http://permalink.gmane.org/gmane.comp.emulators.libvirt/79251</link>
    <description>&lt;pre&gt;I noticed several unusual spacings in for loops, and decided to
fix them up.  See the next commit for the syntax check that found
all of these.

* examples/domsuspend/suspend.c (main): Fix spacing.
* python/libvirt-override.c: Likewise.
* src/conf/interface_conf.c: Likewise.
* src/security/virt-aa-helper.c: Likewise.
* src/util/virconf.c: Likewise.
* src/util/virhook.c: Likewise.
* src/util/virlog.c: Likewise.
* src/util/virsocketaddr.c: Likewise.
* src/util/virsysinfo.c: Likewise.
* src/util/viruuid.c: Likewise.
* src/vbox/vbox_tmpl.c: Likewise.
* src/xen/xen_hypervisor.c: Likewise.
* tools/virsh-domain-monitor.c (vshDomainStateToString): Drop
default case, to let compiler check us.
* tools/virsh-domain.c (vshDomainVcpuStateToString): Likewise.

Signed-off-by: Eric Blake &amp;lt;eblake&amp;lt; at &amp;gt;redhat.com&amp;gt;
---
 examples/domsuspend/suspend.c |  2 +-
 python/libvirt-override.c     | 38 +++++++++++++++++++-------------------
 src/conf/interface_conf.c     | 14 +++++++-------
 src/security/virt-aa-helper.c |  2 +-
 src/util/virconf.c            |  4 ++--
 src/util/virhook.c            |  2 +-
 src/util/virlog.c             | 10 +++++-----
 src/util/virsocketaddr.c      | 12 ++++++------
 src/util/virsysinfo.c         |  4 ++--
 src/util/viruuid.c            |  4 ++--
 src/vbox/vbox_tmpl.c          | 11 ++++++++---
 src/xen/xen_hypervisor.c      |  3 ++-
 tools/virsh-domain-monitor.c  |  6 +++---
 tools/virsh-domain.c          |  6 +++---
 14 files changed, 62 insertions(+), 56 deletions(-)

diff --git a/examples/domsuspend/suspend.c b/examples/domsuspend/suspend.c
index a6311d1..d9f56bb 100644
--- a/examples/domsuspend/suspend.c
+++ b/examples/domsuspend/suspend.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -113,7 +113,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; int main(int argc, char **argv) {
             fprintf(stderr, "Failed to list the domains\n");
             goto error;
         }
-        for (j = 0;j &amp;lt; i;j++) {
+        for (j = 0; j &amp;lt; i; j++) {
             if (ids[j] != 0) {
                 id = ids[j];
                 break;
diff --git a/python/libvirt-override.c b/python/libvirt-override.c
index 6ed2624..b6462c2 100644
--- a/python/libvirt-override.c
+++ b/python/libvirt-override.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2176,7 +2176,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; libvirt_virConnectListDomainsID(PyObject *self ATTRIBUTE_UNUSED,
     py_retval = PyList_New(c_retval);

     if (ids) {
-        for (i = 0;i &amp;lt; c_retval;i++) {
+        for (i = 0; i &amp;lt; c_retval; i++) {
             PyList_SetItem(py_retval, i, libvirt_intWrap(ids[i]));
         }
         VIR_FREE(ids);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2266,7 +2266,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; libvirt_virConnectListDefinedDomains(PyObject *self ATTRIBUTE_UNUSED,
     py_retval = PyList_New(c_retval);

     if (names) {
-        for (i = 0;i &amp;lt; c_retval;i++) {
+        for (i = 0; i &amp;lt; c_retval; i++) {
             PyList_SetItem(py_retval, i, libvirt_constcharPtrWrap(names[i]));
             VIR_FREE(names[i]);
         }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2745,7 +2745,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; libvirt_virConnectListNetworks(PyObject *self ATTRIBUTE_UNUSED,
     py_retval = PyList_New(c_retval);

     if (names) {
-        for (i = 0;i &amp;lt; c_retval;i++) {
+        for (i = 0; i &amp;lt; c_retval; i++) {
             PyList_SetItem(py_retval, i, libvirt_constcharPtrWrap(names[i]));
             VIR_FREE(names[i]);
         }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2790,7 +2790,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; libvirt_virConnectListDefinedNetworks(PyObject *self ATTRIBUTE_UNUSED,
     py_retval = PyList_New(c_retval);

     if (names) {
-        for (i = 0;i &amp;lt; c_retval;i++) {
+        for (i = 0; i &amp;lt; c_retval; i++) {
             PyList_SetItem(py_retval, i, libvirt_constcharPtrWrap(names[i]));
             VIR_FREE(names[i]);
         }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2997,7 +2997,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; libvirt_virNodeGetCellsFreeMemory(PyObject *self ATTRIBUTE_UNUSED, PyObject *arg
         return VIR_PY_NONE;
     }
     py_retval = PyList_New(c_retval);
-    for (i = 0;i &amp;lt; c_retval;i++) {
+    for (i = 0; i &amp;lt; c_retval; i++) {
         PyList_SetItem(py_retval, i,
                 libvirt_longlongWrap((long long) freeMems[i]));
     }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3165,7 +3165,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; libvirt_virConnectListStoragePools(PyObject *self ATTRIBUTE_UNUSED,
     py_retval = PyList_New(c_retval);
     if (py_retval == NULL) {
         if (names) {
-            for (i = 0;i &amp;lt; c_retval;i++)
+            for (i = 0; i &amp;lt; c_retval; i++)
                 VIR_FREE(names[i]);
             VIR_FREE(names);
         }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3173,7 +3173,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; libvirt_virConnectListStoragePools(PyObject *self ATTRIBUTE_UNUSED,
     }

     if (names) {
-        for (i = 0;i &amp;lt; c_retval;i++) {
+        for (i = 0; i &amp;lt; c_retval; i++) {
             PyList_SetItem(py_retval, i, libvirt_constcharPtrWrap(names[i]));
             VIR_FREE(names[i]);
         }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3218,7 +3218,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; libvirt_virConnectListDefinedStoragePools(PyObject *self ATTRIBUTE_UNUSED,
     py_retval = PyList_New(c_retval);
     if (py_retval == NULL) {
         if (names) {
-            for (i = 0;i &amp;lt; c_retval;i++)
+            for (i = 0; i &amp;lt; c_retval; i++)
                 VIR_FREE(names[i]);
             VIR_FREE(names);
         }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3226,7 +3226,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; libvirt_virConnectListDefinedStoragePools(PyObject *self ATTRIBUTE_UNUSED,
     }

     if (names) {
-        for (i = 0;i &amp;lt; c_retval;i++) {
+        for (i = 0; i &amp;lt; c_retval; i++) {
             PyList_SetItem(py_retval, i, libvirt_constcharPtrWrap(names[i]));
             VIR_FREE(names[i]);
         }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3317,7 +3317,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; libvirt_virStoragePoolListVolumes(PyObject *self ATTRIBUTE_UNUSED,
     py_retval = PyList_New(c_retval);
     if (py_retval == NULL) {
         if (names) {
-            for (i = 0;i &amp;lt; c_retval;i++)
+            for (i = 0; i &amp;lt; c_retval; i++)
                 VIR_FREE(names[i]);
             VIR_FREE(names);
         }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3325,7 +3325,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; libvirt_virStoragePoolListVolumes(PyObject *self ATTRIBUTE_UNUSED,
     }

     if (names) {
-        for (i = 0;i &amp;lt; c_retval;i++) {
+        for (i = 0; i &amp;lt; c_retval; i++) {
             PyList_SetItem(py_retval, i, libvirt_constcharPtrWrap(names[i]));
             VIR_FREE(names[i]);
         }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3578,7 +3578,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; libvirt_virNodeListDevices(PyObject *self ATTRIBUTE_UNUSED,
     py_retval = PyList_New(c_retval);

     if (names) {
-        for (i = 0;i &amp;lt; c_retval;i++) {
+        for (i = 0; i &amp;lt; c_retval; i++) {
             PyList_SetItem(py_retval, i, libvirt_constcharPtrWrap(names[i]));
             VIR_FREE(names[i]);
         }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3668,7 +3668,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; libvirt_virNodeDeviceListCaps(PyObject *self ATTRIBUTE_UNUSED,
     py_retval = PyList_New(c_retval);

     if (names) {
-        for (i = 0;i &amp;lt; c_retval;i++) {
+        for (i = 0; i &amp;lt; c_retval; i++) {
             PyList_SetItem(py_retval, i, libvirt_constcharPtrWrap(names[i]));
             VIR_FREE(names[i]);
         }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3787,7 +3787,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; libvirt_virConnectListSecrets(PyObject *self ATTRIBUTE_UNUSED,
     py_retval = PyList_New(c_retval);

     if (uuids) {
-        for (i = 0;i &amp;lt; c_retval;i++) {
+        for (i = 0; i &amp;lt; c_retval; i++) {
             PyList_SetItem(py_retval, i, libvirt_constcharPtrWrap(uuids[i]));
             VIR_FREE(uuids[i]);
         }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -4006,7 +4006,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; libvirt_virConnectListNWFilters(PyObject *self ATTRIBUTE_UNUSED,
     py_retval = PyList_New(c_retval);

     if (uuids) {
-        for (i = 0;i &amp;lt; c_retval;i++) {
+        for (i = 0; i &amp;lt; c_retval; i++) {
             PyList_SetItem(py_retval, i, libvirt_constcharPtrWrap(uuids[i]));
             VIR_FREE(uuids[i]);
         }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -4097,7 +4097,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; libvirt_virConnectListInterfaces(PyObject *self ATTRIBUTE_UNUSED,
     py_retval = PyList_New(c_retval);
     if (py_retval == NULL) {
         if (names) {
-            for (i = 0;i &amp;lt; c_retval;i++)
+            for (i = 0; i &amp;lt; c_retval; i++)
                 VIR_FREE(names[i]);
             VIR_FREE(names);
         }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -4105,7 +4105,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; libvirt_virConnectListInterfaces(PyObject *self ATTRIBUTE_UNUSED,
     }

     if (names) {
-        for (i = 0;i &amp;lt; c_retval;i++) {
+        for (i = 0; i &amp;lt; c_retval; i++) {
             PyList_SetItem(py_retval, i, libvirt_constcharPtrWrap(names[i]));
             VIR_FREE(names[i]);
         }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -4151,7 +4151,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; libvirt_virConnectListDefinedInterfaces(PyObject *self ATTRIBUTE_UNUSED,
     py_retval = PyList_New(c_retval);
     if (py_retval == NULL) {
         if (names) {
-            for (i = 0;i &amp;lt; c_retval;i++)
+            for (i = 0; i &amp;lt; c_retval; i++)
                 VIR_FREE(names[i]);
             VIR_FREE(names);
         }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -4159,7 +4159,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; libvirt_virConnectListDefinedInterfaces(PyObject *self ATTRIBUTE_UNUSED,
     }

     if (names) {
-        for (i = 0;i &amp;lt; c_retval;i++) {
+        for (i = 0; i &amp;lt; c_retval; i++) {
             PyList_SetItem(py_retval, i, libvirt_constcharPtrWrap(names[i]));
             VIR_FREE(names[i]);
         }
diff --git a/src/conf/interface_conf.c b/src/conf/interface_conf.c
index d8100ed..025a454 100644
--- a/src/conf/interface_conf.c
+++ b/src/conf/interface_conf.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,7 +1,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 /*
  * interface_conf.c: interfaces XML handling
  *
- * Copyright (C) 2006-2010 Red Hat, Inc.
+ * Copyright (C) 2006-2010, 2013 Red Hat, Inc.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -80,7 +80,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; void virInterfaceDefFree(virInterfaceDefPtr def)
     switch (def-&amp;gt;type) {
         case VIR_INTERFACE_TYPE_BRIDGE:
             VIR_FREE(def-&amp;gt;data.bridge.delay);
-            for (i = 0;i &amp;lt; def-&amp;gt;data.bridge.nbItf;i++) {
+            for (i = 0; i &amp;lt; def-&amp;gt;data.bridge.nbItf; i++) {
                 if (def-&amp;gt;data.bridge.itf[i] == NULL)
                     break; /* to cope with half parsed data on errors */
                 virInterfaceDefFree(def-&amp;gt;data.bridge.itf[i]);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -89,7 +89,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; void virInterfaceDefFree(virInterfaceDefPtr def)
             break;
         case VIR_INTERFACE_TYPE_BOND:
             VIR_FREE(def-&amp;gt;data.bond.target);
-            for (i = 0;i &amp;lt; def-&amp;gt;data.bond.nbItf;i++) {
+            for (i = 0; i &amp;lt; def-&amp;gt;data.bond.nbItf; i++) {
                 if (def-&amp;gt;data.bond.itf[i] == NULL)
                     break; /* to cope with half parsed data on errors */
                 virInterfaceDefFree(def-&amp;gt;data.bond.itf[i]);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -504,7 +504,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; virInterfaceDefParseBridge(virInterfaceDefPtr def,
         }
         def-&amp;gt;data.bridge.nbItf = nbItf;

-        for (i = 0; i &amp;lt; nbItf;i++) {
+        for (i = 0; i &amp;lt; nbItf; i++) {
             ctxt-&amp;gt;node = interfaces[i];
             itf = virInterfaceDefParseXML(ctxt, VIR_INTERFACE_TYPE_BRIDGE);
             if (itf == NULL) {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -551,7 +551,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; virInterfaceDefParseBondItfs(virInterfaceDefPtr def,
     }
     def-&amp;gt;data.bond.nbItf = nbItf;

-    for (i = 0; i &amp;lt; nbItf;i++) {
+    for (i = 0; i &amp;lt; nbItf; i++) {
         ctxt-&amp;gt;node = interfaces[i];
         itf = virInterfaceDefParseXML(ctxt, VIR_INTERFACE_TYPE_BOND);
         if (itf == NULL) {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -886,7 +886,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; virInterfaceBridgeDefFormat(virBufferPtr buf,
         virBufferAsprintf(buf, " delay='%s'", def-&amp;gt;data.bridge.delay);
     virBufferAddLit(buf, "&amp;gt;\n");

-    for (i = 0;i &amp;lt; def-&amp;gt;data.bridge.nbItf;i++) {
+    for (i = 0; i &amp;lt; def-&amp;gt;data.bridge.nbItf; i++) {
         if (virInterfaceDefDevFormat(buf,
                                      def-&amp;gt;data.bridge.itf[i], level+2) &amp;lt; 0)
             ret = -1;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -948,7 +948,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; virInterfaceBondDefFormat(virBufferPtr buf,
             virBufferAddLit(buf, " validate='all'");
         virBufferAddLit(buf, "/&amp;gt;\n");
     }
-    for (i = 0;i &amp;lt; def-&amp;gt;data.bond.nbItf;i++) {
+    for (i = 0; i &amp;lt; def-&amp;gt;data.bond.nbItf; i++) {
         if (virInterfaceDefDevFormat(buf, def-&amp;gt;data.bond.itf[i], level+2) &amp;lt; 0)
             ret = -1;
     }
diff --git a/src/security/virt-aa-helper.c b/src/security/virt-aa-helper.c
index f16a35b..02359fc 100644
--- a/src/security/virt-aa-helper.c
+++ b/src/security/virt-aa-helper.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -71,7 +71,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; typedef struct {
     char *files;                /* list of files */
     virDomainDefPtr def;        /* VM definition */
     virCapsPtr caps;            /* VM capabilities */
-    virDomainXMLOptionPtr xmlopt;/* XML parser data */
+    virDomainXMLOptionPtr xmlopt; /* XML parser data */
     char *hvm;                  /* type of hypervisor (eg hvm, xen) */
     virArch arch;               /* machine architecture */
     char *newfile;              /* newly added file */
diff --git a/src/util/virconf.c b/src/util/virconf.c
index c578bf4..ef76369 100644
--- a/src/util/virconf.c
+++ b/src/util/virconf.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,7 +1,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 /*
  * virconf.c: parser for a subset of the Python encoded Xen configuration files
  *
- * Copyright (C) 2006-2012 Red Hat, Inc.
+ * Copyright (C) 2006-2013 Red Hat, Inc.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -67,7 +67,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; struct _virConfParserCtxt {
 #define SKIP_BLANKS_AND_EOL                                             \
   do { while ((ctxt-&amp;gt;cur &amp;lt; ctxt-&amp;gt;end) &amp;amp;&amp;amp; (c_isblank(CUR) || IS_EOL(CUR))) { \
          if (CUR == '\n') ctxt-&amp;gt;line++;                                \
-         ctxt-&amp;gt;cur++;}} while (0)
+         ctxt-&amp;gt;cur++; } } while (0)
 #define SKIP_BLANKS                                                     \
   do { while ((ctxt-&amp;gt;cur &amp;lt; ctxt-&amp;gt;end) &amp;amp;&amp;amp; (c_isblank(CUR)))              \
           ctxt-&amp;gt;cur++; } while (0)
diff --git a/src/util/virhook.c b/src/util/virhook.c
index 508c268..507eae2 100644
--- a/src/util/virhook.c
+++ b/src/util/virhook.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -142,7 +142,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; virHookInitialize(void) {
     int i, res, ret = 0;

     virHooksFound = 0;
-    for (i = 0;i &amp;lt; VIR_HOOK_DRIVER_LAST;i++) {
+    for (i = 0; i &amp;lt; VIR_HOOK_DRIVER_LAST; i++) {
         res = virHookCheck(i, virHookDriverTypeToString(i));
         if (res &amp;lt; 0)
             return -1;
diff --git a/src/util/virlog.c b/src/util/virlog.c
index 348bddc..f456cb9 100644
--- a/src/util/virlog.c
+++ b/src/util/virlog.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -371,7 +371,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; virLogDumpAllFD(const char *msg, int len)
     if (len &amp;lt;= 0)
         len = strlen(msg);

-    for (i = 0; i &amp;lt; virLogNbOutputs;i++) {
+    for (i = 0; i &amp;lt; virLogNbOutputs; i++) {
         if (virLogOutputs[i].f == virLogOutputToFd) {
             int fd = (intptr_t) virLogOutputs[i].data;

&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -514,7 +514,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; virLogResetFilters(void)
 {
     int i;

-    for (i = 0; i &amp;lt; virLogNbFilters;i++)
+    for (i = 0; i &amp;lt; virLogNbFilters; i++)
         VIR_FREE(virLogFilters[i].match);
     VIR_FREE(virLogFilters);
     virLogNbFilters = 0;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -550,7 +550,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; virLogDefineFilter(const char *match,
         return -1;

     virLogLock();
-    for (i = 0;i &amp;lt; virLogNbFilters;i++) {
+    for (i = 0; i &amp;lt; virLogNbFilters; i++) {
         if (STREQ(virLogFilters[i].match, match)) {
             virLogFilters[i].priority = priority;
             goto cleanup;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -597,7 +597,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; virLogFiltersCheck(const char *input,
     int i;

     virLogLock();
-    for (i = 0;i &amp;lt; virLogNbFilters;i++) {
+    for (i = 0; i &amp;lt; virLogNbFilters; i++) {
         if (strstr(input, virLogFilters[i].match)) {
             ret = virLogFilters[i].priority;
             *flags = virLogFilters[i].flags;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -621,7 +621,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; virLogResetOutputs(void)
 {
     int i;

-    for (i = 0;i &amp;lt; virLogNbOutputs;i++) {
+    for (i = 0; i &amp;lt; virLogNbOutputs; i++) {
         if (virLogOutputs[i].c != NULL)
             virLogOutputs[i].c(virLogOutputs[i].data);
         VIR_FREE(virLogOutputs[i].name);
diff --git a/src/util/virsocketaddr.c b/src/util/virsocketaddr.c
index 1a6714e..1071b00 100644
--- a/src/util/virsocketaddr.c
+++ b/src/util/virsocketaddr.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -49,7 +49,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int virSocketAddrGetIPv4Addr(virSocketAddrPtr addr, virSocketAddrIPv4Ptr

     val = ntohl(addr-&amp;gt;data.inet4.sin_addr.s_addr);

-    for (i = 0;i &amp;lt; 4;i++) {
+    for (i = 0; i &amp;lt; 4; i++) {
         (*tab)[3 - i] = val &amp;amp; 0xFF;
         val &amp;gt;&amp;gt;= 8;
     }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -63,7 +63,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int virSocketAddrGetIPv6Addr(virSocketAddrPtr addr, virSocketAddrIPv6Ptr
     if ((addr == NULL) || (tab == NULL) || (addr-&amp;gt;data.stor.ss_family != AF_INET6))
         return -1;

-    for (i = 0;i &amp;lt; 8;i++) {
+    for (i = 0; i &amp;lt; 8; i++) {
         (*tab)[i] = ((addr-&amp;gt;data.inet6.sin6_addr.s6_addr[2 * i] &amp;lt;&amp;lt; 8) |
                      addr-&amp;gt;data.inet6.sin6_addr.s6_addr[2 * i + 1]);
     }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -530,7 +530,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; int virSocketAddrCheckNetmask(virSocketAddrPtr addr1, virSocketAddrPtr addr2,
             (virSocketAddrGetIPv4Addr(netmask, &amp;amp;tm) &amp;lt; 0))
             return -1;

-        for (i = 0;i &amp;lt; 4;i++) {
+        for (i = 0; i &amp;lt; 4; i++) {
             if ((t1[i] &amp;amp; tm[i]) != (t2[i] &amp;amp; tm[i]))
                 return 0;
         }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -543,7 +543,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; int virSocketAddrCheckNetmask(virSocketAddrPtr addr1, virSocketAddrPtr addr2,
             (virSocketAddrGetIPv6Addr(netmask, &amp;amp;tm) &amp;lt; 0))
             return -1;

-        for (i = 0;i &amp;lt; 8;i++) {
+        for (i = 0; i &amp;lt; 8; i++) {
             if ((t1[i] &amp;amp; tm[i]) != (t2[i] &amp;amp; tm[i]))
                 return 0;
         }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -581,7 +581,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; int virSocketAddrGetRange(virSocketAddrPtr start, virSocketAddrPtr end) {
             (virSocketAddrGetIPv4Addr(end, &amp;amp;t2) &amp;lt; 0))
             return -1;

-        for (i = 0;i &amp;lt; 2;i++) {
+        for (i = 0; i &amp;lt; 2; i++) {
             if (t1[i] != t2[i])
                 return -1;
         }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -596,7 +596,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; int virSocketAddrGetRange(virSocketAddrPtr start, virSocketAddrPtr end) {
             (virSocketAddrGetIPv6Addr(end, &amp;amp;t2) &amp;lt; 0))
             return -1;

-        for (i = 0;i &amp;lt; 7;i++) {
+        for (i = 0; i &amp;lt; 7; i++) {
             if (t1[i] != t2[i])
                 return -1;
         }
diff --git a/src/util/virsysinfo.c b/src/util/virsysinfo.c
index 4868a5f..c6d3a71 100644
--- a/src/util/virsysinfo.c
+++ b/src/util/virsysinfo.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -91,7 +91,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; void virSysinfoDefFree(virSysinfoDefPtr def)
     VIR_FREE(def-&amp;gt;system_sku);
     VIR_FREE(def-&amp;gt;system_family);

-    for (i = 0;i &amp;lt; def-&amp;gt;nprocessor;i++) {
+    for (i = 0; i &amp;lt; def-&amp;gt;nprocessor; i++) {
         VIR_FREE(def-&amp;gt;processor[i].processor_socket_destination);
         VIR_FREE(def-&amp;gt;processor[i].processor_type);
         VIR_FREE(def-&amp;gt;processor[i].processor_family);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -105,7 +105,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; void virSysinfoDefFree(virSysinfoDefPtr def)
         VIR_FREE(def-&amp;gt;processor[i].processor_part_number);
     }
     VIR_FREE(def-&amp;gt;processor);
-    for (i = 0;i &amp;lt; def-&amp;gt;nmemory;i++) {
+    for (i = 0; i &amp;lt; def-&amp;gt;nmemory; i++) {
         VIR_FREE(def-&amp;gt;memory[i].memory_size);
         VIR_FREE(def-&amp;gt;memory[i].memory_form_factor);
         VIR_FREE(def-&amp;gt;memory[i].memory_locator);
diff --git a/src/util/viruuid.c b/src/util/viruuid.c
index 8f82187..9f4bb13 100644
--- a/src/util/viruuid.c
+++ b/src/util/viruuid.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,7 +1,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 /*
  * viruuid.h: helper APIs for dealing with UUIDs
  *
- * Copyright (C) 2007-2012 Red Hat, Inc.
+ * Copyright (C) 2007-2013 Red Hat, Inc.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -160,7 +160,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; virUUIDParse(const char *uuidstr, unsigned char *uuid) {
     while (c_isspace(*cur))
         cur++;

-    for (i = 0;i &amp;lt; VIR_UUID_BUFLEN;) {
+    for (i = 0; i &amp;lt; VIR_UUID_BUFLEN;) {
         uuid[i] = 0;
         if (*cur == 0)
             goto error;
diff --git a/src/vbox/vbox_tmpl.c b/src/vbox/vbox_tmpl.c
index d37888c..9ddb3ad 100644
--- a/src/vbox/vbox_tmpl.c
+++ b/src/vbox/vbox_tmpl.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2938,7 +2938,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; sharedFoldersCleanup:
             }

             /* Now get the details about the network cards here */
-            for (i = 0;(netAdpIncCnt &amp;lt; def-&amp;gt;nnets) &amp;amp;&amp;amp; (i &amp;lt; netAdpCnt); i++) {
+            for (i = 0; netAdpIncCnt &amp;lt; def-&amp;gt;nnets &amp;amp;&amp;amp; i &amp;lt; netAdpCnt; i++) {
                 INetworkAdapter *adapter = NULL;

                 machine-&amp;gt;vtbl-&amp;gt;GetNetworkAdapter(machine, i, &amp;amp;adapter);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3216,7 +3216,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; sharedFoldersCleanup:
             }

             /* Now get the details about the serial ports here */
-            for (i = 0;(serialPortIncCount &amp;lt; def-&amp;gt;nserials) &amp;amp;&amp;amp; (i &amp;lt; serialPortCount); i++) {
+            for (i = 0;
+                 serialPortIncCount &amp;lt; def-&amp;gt;nserials &amp;amp;&amp;amp; i &amp;lt; serialPortCount;
+                 i++) {
                 ISerialPort *serialPort = NULL;

                 machine-&amp;gt;vtbl-&amp;gt;GetSerialPort(machine, i, &amp;amp;serialPort);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3300,7 +3302,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; sharedFoldersCleanup:
             }

             /* Now get the details about the parallel ports here */
-            for (i = 0;(parallelPortIncCount &amp;lt; def-&amp;gt;nparallels) &amp;amp;&amp;amp; (i &amp;lt; parallelPortCount); i++) {
+            for (i = 0;
+                 parallelPortIncCount &amp;lt; def-&amp;gt;nparallels &amp;amp;&amp;amp;
+                     i &amp;lt; parallelPortCount;
+                 i++) {
                 IParallelPort *parallelPort = NULL;

                 machine-&amp;gt;vtbl-&amp;gt;GetParallelPort(machine, i, &amp;amp;parallelPort);
diff --git a/src/xen/xen_hypervisor.c b/src/xen/xen_hypervisor.c
index 11ba516..cfc8139 100644
--- a/src/xen/xen_hypervisor.c
+++ b/src/xen/xen_hypervisor.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2873,7 +2873,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; xenHypervisorNodeGetCellsFreeMemory(virConnectPtr conn,
     memset(&amp;amp;op_sys, 0, sizeof(op_sys));
     op_sys.cmd = XEN_V2_OP_GETAVAILHEAP;

-    for (i = startCell, j = 0;(i &amp;lt; priv-&amp;gt;nbNodeCells) &amp;amp;&amp;amp; (j &amp;lt; maxCells);i++,j++) {
+    for (i = startCell, j = 0;
+         i &amp;lt; priv-&amp;gt;nbNodeCells &amp;amp;&amp;amp; j &amp;lt; maxCells; i++, j++) {
         if (hv_versions.sys_interface &amp;gt;= 5)
             op_sys.u.availheap5.node = i;
         else
diff --git a/tools/virsh-domain-monitor.c b/tools/virsh-domain-monitor.c
index 5ed89d1..b284154 100644
--- a/tools/virsh-domain-monitor.c
+++ b/tools/virsh-domain-monitor.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,7 +1,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 /*
  * virsh-domain-monitor.c: Commands to monitor domain status
  *
- * Copyright (C) 2005, 2007-2012 Red Hat, Inc.
+ * Copyright (C) 2005, 2007-2013 Red Hat, Inc.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -156,8 +156,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; vshDomainStateToString(int state)
     case VIR_DOMAIN_PMSUSPENDED:
         return N_("pmsuspended");
     case VIR_DOMAIN_NOSTATE:
-    default:
-        ;/*FALLTHROUGH*/
+    case VIR_DOMAIN_LAST:
+        break;
     }
     return N_("no state");  /* = dom0 state */
 }
diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
index 0402aef..4fdf4ba 100644
--- a/tools/virsh-domain.c
+++ b/tools/virsh-domain.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -114,15 +114,15 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; vshCommandOptDomainBy(vshControl *ctl, const vshCmd *cmd,
 static const char *
 vshDomainVcpuStateToString(int state)
 {
-    switch (state) {
+    switch ((virVcpuState) state) {
     case VIR_VCPU_OFFLINE:
         return N_("offline");
     case VIR_VCPU_BLOCKED:
         return N_("idle");
     case VIR_VCPU_RUNNING:
         return N_("running");
-    default:
-        ;/*FALLTHROUGH*/
+    case VIR_VCPU_LAST:
+        break;
     }
     return N_("no state");
 }
&lt;/pre&gt;</description>
    <dc:creator>Eric Blake</dc:creator>
    <dc:date>2013-05-24T17:19:36</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79250">
    <title>[libvirt] [PATCH 2/2] syntax-check: mandate space after mid-linesemicolon</title>
    <link>http://permalink.gmane.org/gmane.comp.emulators.libvirt/79250</link>
    <description>&lt;pre&gt;Enforce the style cleanup in the previous patch.

* build-aux/bracket-spacing.pl: Enforce trailing spacing.
* cfg.mk (bracket-spacing-check): Tweak error wording.
* docs/hacking.html.in: Document the rule.
* HACKING: Regenerate.

Signed-off-by: Eric Blake &amp;lt;eblake&amp;lt; at &amp;gt;redhat.com&amp;gt;
---
 HACKING                      | 23 +++++++++++++++++++++++
 build-aux/bracket-spacing.pl | 12 ++++++++++++
 cfg.mk                       |  2 +-
 docs/hacking.html.in         | 29 +++++++++++++++++++++++++++++
 4 files changed, 65 insertions(+), 1 deletion(-)

diff --git a/HACKING b/HACKING
index 2bd6d69..42f76b6 100644
--- a/HACKING
+++ b/HACKING
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -318,6 +318,29 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; immediately prior to any closing bracket. E.g.
       int foo(int wizz);    // Good


+Semicolons
+==========
+Semicolons should never have a space beforehand. Inside the condition of a
+"for" loop, there should always be a space or line break after each semicolon,
+except for the special case of an infinite loop (although more infinite loops
+use "while"). While not enforced, loop counters generally use post-increment.
+
+      for (i = 0 ;i &amp;lt; limit ; ++i) { // Bad
+      for (i = 0; i &amp;lt; limit; i++) { // Good
+      for (;;) { // ok
+      while (1) { // Better
+
+Empty loop bodies are better represented with curly braces and a comment,
+although use of a semicolon is not currently rejected.
+
+      while ((rc = waitpid(pid, &amp;amp;st, 0) == -1) &amp;amp;&amp;amp; // ok
+             errno == EINTR);
+      while ((rc = waitpid(pid, &amp;amp;st, 0) == -1) &amp;amp;&amp;amp; // Better
+             errno == EINTR) {
+          /* nothing */
+      }
+
+
 Curly braces
 ============
 Omit the curly braces around an "if", "while", "for" etc. body only when that
diff --git a/build-aux/bracket-spacing.pl b/build-aux/bracket-spacing.pl
index 2eeeeb4..de40040 100755
--- a/build-aux/bracket-spacing.pl
+++ b/build-aux/bracket-spacing.pl
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,6 +1,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #!/usr/bin/perl
 #
 # bracket-spacing.pl: Report any usage of 'function (..args..)'
+# Also check for other syntax issues, such as correct use of ';'
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -31,6 +32,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; foreach my $file (&amp;lt; at &amp;gt;ARGV) {
     while (defined (my $line = &amp;lt;FILE&amp;gt;)) {
         my $data = $line;

+        # Kill any quoted ; or "
+        $data =~ s,'[";]','X',g;
+
         # Kill any quoted strings
         $data =~ s,"([^\\\"]|\\.)*","XXX",g;

&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -125,6 +129,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; foreach my $file (&amp;lt; at &amp;gt;ARGV) {
             $ret = 1;
             last;
         }
+
+        # Require EOL, macro line continuation, or whitespace after ":".
+        # Allow "for (;;)" as an exception.
+        while ($data =~ /;[^ \\\n;)]/) {
+            print "$file:$.: $line";
+            $ret = 1;
+            last;
+        }
     }
     close FILE;
 }
diff --git a/cfg.mk b/cfg.mk
index 55359e8..6e8b6d4 100644
--- a/cfg.mk
+++ b/cfg.mk
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -845,7 +845,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; syntax-check: $(top_srcdir)/HACKING bracket-spacing-check
 bracket-spacing-check:
 $(AM_V_GEN)files=`$(VC_LIST) | grep '\.c$$'`; \
 $(PERL) $(top_srcdir)/build-aux/bracket-spacing.pl $$files || \
-          (echo $(ME): incorrect whitespace around brackets, see HACKING for rules &amp;amp;&amp;amp; exit 1)
+          (echo "$(ME): incorrect whitespace, see HACKING for rules" &amp;amp;&amp;amp; exit 1)

 # sc_po_check can fail if generated files are not built first
 sc_po_check: \
diff --git a/docs/hacking.html.in b/docs/hacking.html.in
index 78959f3..08b8b4c 100644
--- a/docs/hacking.html.in
+++ b/docs/hacking.html.in
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -377,6 +377,35 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
       int foo(int wizz);    // Good
 &amp;lt;/pre&amp;gt;

+    &amp;lt;h2&amp;gt;&amp;lt;a name="semicolon"&amp;gt;Semicolons&amp;lt;/a&amp;gt;&amp;lt;/h2&amp;gt;
+
+    &amp;lt;p&amp;gt;
+      Semicolons should never have a space beforehand.  Inside the
+      condition of a &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loop, there should always be a
+      space or line break after each semicolon, except for the special
+      case of an infinite loop (although more infinite loops
+      use &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;).  While not enforced, loop counters
+      generally use post-increment.
+    &amp;lt;/p&amp;gt;
+    &amp;lt;pre&amp;gt;
+      for (i = 0 ;i &amp;amp;lt; limit ; ++i) { // Bad
+      for (i = 0; i &amp;amp;lt; limit; i++) { // Good
+      for (;;) { // ok
+      while (1) { // Better
+&amp;lt;/pre&amp;gt;
+    &amp;lt;p&amp;gt;
+      Empty loop bodies are better represented with curly braces and a
+      comment, although use of a semicolon is not currently rejected.
+    &amp;lt;/p&amp;gt;
+    &amp;lt;pre&amp;gt;
+      while ((rc = waitpid(pid, &amp;amp;amp;st, 0) == -1) &amp;amp;amp;&amp;amp;amp; // ok
+             errno == EINTR);
+      while ((rc = waitpid(pid, &amp;amp;amp;st, 0) == -1) &amp;amp;amp;&amp;amp;amp; // Better
+             errno == EINTR) {
+          /* nothing */
+      }
+&amp;lt;/pre&amp;gt;
+
     &amp;lt;h2&amp;gt;&amp;lt;a name="curly_braces"&amp;gt;Curly braces&amp;lt;/a&amp;gt;&amp;lt;/h2&amp;gt;

     &amp;lt;p&amp;gt;
&lt;/pre&gt;</description>
    <dc:creator>Eric Blake</dc:creator>
    <dc:date>2013-05-24T17:19:37</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79249">
    <title>Re: [libvirt] [PATCH] spec: Build vbox packages only for x86architectures</title>
    <link>http://permalink.gmane.org/gmane.comp.emulators.libvirt/79249</link>
    <description>&lt;pre&gt;
ACK and pushed.


&lt;/pre&gt;</description>
    <dc:creator>Eric Blake</dc:creator>
    <dc:date>2013-05-24T16:11:49</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79247">
    <title>Re: [libvirt] two hostdev devices problem</title>
    <link>http://permalink.gmane.org/gmane.comp.emulators.libvirt/79247</link>
    <description>&lt;pre&gt;


First - I just got confirmation from the libnl maintainer that the bug I
mentioned causing problems with max_vfs &amp;gt; 50 *is* an issue in libnl
3.2.16 - it is fixed in libnl 3.2.22. Try to upgrade to that version and
it should solve at least some of your problems.




Interesting.

So now I'm curious about something - can you try adding a vlan tag to
your networks and see if the vlan tag is set properly when max_vfs is a
low number (10 or 7):

&amp;lt;network&amp;gt;
  &amp;lt;name&amp;gt;vnet0&amp;lt;/name&amp;gt;
  &amp;lt;uuid&amp;gt;ec49896a-a0b5-4944-a81f-9f0cdf578871&amp;lt;/uuid&amp;gt;
  &amp;lt;vlan&amp;gt;
    &amp;lt;tag id='42'/&amp;gt;
  &amp;lt;/vlan&amp;gt;
  &amp;lt;forward mode='hostdev' managed='yes'&amp;gt;
    &amp;lt;pf dev='eth0'/&amp;gt;
  &amp;lt;/forward&amp;gt;
&amp;lt;/network&amp;gt;


(you will have to do "virsh net-destroy vnet0; virsh net-start vnet0"
after making the modification to the network). If the vlan tag is
successfully set, it will show up next to the mac address for the VF in
the output of "ip link show dev $PF".

(BTW, it may get a bit confusing if you leave your networks named as
"vnet0" and "vnet1" - although it's a different namespace, libvirt uses
"vnetN" (where n is 0 - whatever) as the name for the tap device
associated with each guest interface).

To summarize:

1) when you have max_vfs = 10, you can assign the devices and mac
addresses are set properly, i.e. everything works.
2) when you have max_vfs = 35, you can assign the devices, but the mac
addresses are not set properly.
3) when you have max_vfs = 63, you can't assign the devices because you
get this error:

        internal error missing IFLA_VF_INFO in netlink response

Is this correct?


Okay, so that's not the problem.


&lt;/pre&gt;</description>
    <dc:creator>Laine Stump</dc:creator>
    <dc:date>2013-05-24T15:49:45</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79246">
    <title>Re: [libvirt] Ongoing work on lock contention in qemu driver?</title>
    <link>http://permalink.gmane.org/gmane.comp.emulators.libvirt/79246</link>
    <description>&lt;pre&gt;
To verify that this is worthwhile, I disabled the apparmor driver
entirely. My 20 VM creation test ran about 10s faster (down from 35s
to 25s).

After giving this approach a little more thought, I think an
incremental series of patches is a good way to go. The responsibility
of locking could be pushed down into the security drivers. At first,
all of the drivers would lock where their managers' locked. Then each
driver could be updated to do more fine-grained locking. I'm going to
work on a patch to push the locking down into the drivers, then I'm
going to work on a patch for better locking in the apparmor driver.


After removing the security driver contention, this was still a
substantial bottleneck: virConnectDefineXML could still take a few
seconds. I removed the contention by keeping a copy of the domain
definition's name in the domain object. Since the name is immutable
and the domain object is protected by the list lock, the list
traversal can read the name without taking any additional locks. This
patch reduced virConnectDefineXML to tens of milliseconds.

&lt;/pre&gt;</description>
    <dc:creator>Peter Feiner</dc:creator>
    <dc:date>2013-05-24T15:37:04</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79245">
    <title>Re: [libvirt] [PATCH] qemuOpenVhostNet: Decrease vhostfdSize on open failure</title>
    <link>http://permalink.gmane.org/gmane.comp.emulators.libvirt/79245</link>
    <description>&lt;pre&gt;
This will still go back through the loop again and try to open another.
I would instead just set vhostfdSize = i (in case there were any
successful opens) and break out of the loop.

And again you'll need to decide what is an error and what gets just a
warning - if someone asks for 3 queues and gets none, that should lead
to continuing without any error or even warning. But if they request 2
and only get one, is that an error, or do we warn and continue? or just
silently continue? (I don't have the answer, I'm just asking the
question :-)


&lt;/pre&gt;</description>
    <dc:creator>Laine Stump</dc:creator>
    <dc:date>2013-05-24T14:42:55</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79244">
    <title>Re: [libvirt] [PATCH 06/12] storage_conf: Fix the error type</title>
    <link>http://permalink.gmane.org/gmane.comp.emulators.libvirt/79244</link>
    <description>&lt;pre&gt;Thanks, 1/12 ~ 6/12 are pushed.

&lt;/pre&gt;</description>
    <dc:creator>Osier Yang</dc:creator>
    <dc:date>2013-05-24T14:35:54</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79243">
    <title>Re: [libvirt] [PATCH] syntax-check: ignore all quoted strings in bracket-spacing</title>
    <link>http://permalink.gmane.org/gmane.comp.emulators.libvirt/79243</link>
    <description>&lt;pre&gt;
Hmm, our semicolon check enforces no leading spaces, but we could
probably improve it to also enforce trailing space in a for loop.  For
example, this looks odd:

src/conf/interface_conf.c:        for (i = 0; i &amp;lt; nbItf;i++) {

compared to

for (i = 0; i &amp;lt; nbItf; i++) {

&lt;/pre&gt;</description>
    <dc:creator>Eric Blake</dc:creator>
    <dc:date>2013-05-24T14:26:26</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79242">
    <title>Re: [libvirt] [PATCH 12/12] storage_conf: Use uid_t/gid_t instead of int to cast the value</title>
    <link>http://permalink.gmane.org/gmane.comp.emulators.libvirt/79242</link>
    <description>&lt;pre&gt;
Once you have made this check...


...the cast here is redundant.  You could write 'perms-&amp;gt;uid = val'.


Likewise.

ACK with that simplification, and with your followup that explicitly
allows -1.

&lt;/pre&gt;</description>
    <dc:creator>Eric Blake</dc:creator>
    <dc:date>2013-05-24T14:11:33</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79241">
    <title>Re: [libvirt] [PATCH 10/12] storage_conf: Use VIR_STRDUP instead of strdup</title>
    <link>http://permalink.gmane.org/gmane.comp.emulators.libvirt/79241</link>
    <description>&lt;pre&gt;
I think this was independently fixed by the STRDUP patch series.

&lt;/pre&gt;</description>
    <dc:creator>Eric Blake</dc:creator>
    <dc:date>2013-05-24T14:09:05</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79240">
    <title>Re: [libvirt] [PATCH 0/2] Fix the display of *virsh vcpuinfo*command.</title>
    <link>http://permalink.gmane.org/gmane.comp.emulators.libvirt/79240</link>
    <description>&lt;pre&gt;
[uggh; yet another victim of git's stupidity in using "In-reply-to: &amp;lt;y&amp;gt;"
if you answer the 'git send-email' question incorrectly - just hit enter
rather than filling in a response to that question]

Would you mind resending this as a top-level thread, so that it gets
properly threaded?  My mail client split 0/2 and 2/2 into an old series,
and 1/2 somewhere else.


I'm a bit worried about backward compatibility; if there are existing
scripts that parse the output, will they be confused if we introduce a
third symbol?  Then again, offline host cpus are indeed a different
beast than cpus that the guest has been assigned to, so I think we can
make this change.


&lt;/pre&gt;</description>
    <dc:creator>Eric Blake</dc:creator>
    <dc:date>2013-05-24T14:03:18</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79239">
    <title>Re: [libvirt] [PATCH] syntax-check: ignore all quoted strings in bracket-spacing</title>
    <link>http://permalink.gmane.org/gmane.comp.emulators.libvirt/79239</link>
    <description>&lt;pre&gt;
Thanks, fixed and pushed now.

Jan

&lt;/pre&gt;</description>
    <dc:creator>Ján Tomko</dc:creator>
    <dc:date>2013-05-24T14:01:30</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79238">
    <title>Re: [libvirt] [PATCH] syntax-check: ignore all quoted strings in bracket-spacing</title>
    <link>http://permalink.gmane.org/gmane.comp.emulators.libvirt/79238</link>
    <description>&lt;pre&gt;
Nice.  I've used that trick in cfg.mk as well.

You used '+' instead of '*'; that gives us a chance of a false positive,
if we have both an empty string and another string on the same line:

    str = cond ? "" : " ; ";

because your replacement would result in a rewrite to:

    str = cond ? ""XXX" ; ";

With *, the rewrite would be:

    str = cond ? "XXX" : "XXX";

ACK if you fix the regex.

&lt;/pre&gt;</description>
    <dc:creator>Eric Blake</dc:creator>
    <dc:date>2013-05-24T13:53:55</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79237">
    <title>[libvirt] [PATCH] spec: Build vbox packages only for x86architectures</title>
    <link>http://permalink.gmane.org/gmane.comp.emulators.libvirt/79237</link>
    <description>&lt;pre&gt;Commit 6ab6bc19f03513fd87d29ecfd405bb7f4a7de114 has introduced separate
daemon/driver packages for vbox. These should only be built for x86
architectures which is done hereby.

Signed-off-by: Viktor Mihajlovski &amp;lt;mihajlov&amp;lt; at &amp;gt;linux.vnet.ibm.com&amp;gt;
---
 libvirt.spec.in |    5 +++++
 1 file changed, 5 insertions(+)

diff --git a/libvirt.spec.in b/libvirt.spec.in
index e1c5f49..7abe9fe 100644
--- a/libvirt.spec.in
+++ b/libvirt.spec.in
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -130,6 +130,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
     %define with_libxl 0
 %endif
 
+# vbox is available only on i386 x86_64
+%ifnarch %{ix86} x86_64
+    %define with_vbox 0
+%endif
+
 # Numactl is not available on s390[x] and ARM
 %ifarch s390 s390x %{arm}
     %define with_numactl 0
&lt;/pre&gt;</description>
    <dc:creator>Viktor Mihajlovski</dc:creator>
    <dc:date>2013-05-24T13:44:19</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79236">
    <title>Re: [libvirt] [PATCH 2/2] Adapt to new VIR_STRNDUP behavior</title>
    <link>http://permalink.gmane.org/gmane.comp.emulators.libvirt/79236</link>
    <description>&lt;pre&gt;
ACK.

&lt;/pre&gt;</description>
    <dc:creator>Eric Blake</dc:creator>
    <dc:date>2013-05-24T13:39:45</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79235">
    <title>Re: [libvirt] [PATCH 2/2] Adapt to new VIR_STRNDUP behavior</title>
    <link>http://permalink.gmane.org/gmane.comp.emulators.libvirt/79235</link>
    <description>&lt;pre&gt;

It would be undefined behavior according to the C standard.  Pointer
subtraction is only well-defined within the bounds of a single object;
your object (in C terminology) starts at 'curr' and ends at the NUL byte
that terminates 'curr'.  NULL falls outside that bounds.  'next - curr'
is not guaranteed to be negative, since C says the behavior is
undefined.  Stick with the long form.

&lt;/pre&gt;</description>
    <dc:creator>Eric Blake</dc:creator>
    <dc:date>2013-05-24T13:37:24</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79234">
    <title>Re: [libvirt] [PATCH 1/2] virStrndup: Accept negative values as string length</title>
    <link>http://permalink.gmane.org/gmane.comp.emulators.libvirt/79234</link>
    <description>&lt;pre&gt;

s/That is/That is,/


and again.


Memory leak.  VIR_FREE(dst) before doing another dup into it.

ACK with those fixes.

&lt;/pre&gt;</description>
    <dc:creator>Eric Blake</dc:creator>
    <dc:date>2013-05-24T13:35:11</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79233">
    <title>Re: [libvirt] [PATCH v2] Fix blkdeviotune for shutoff domain</title>
    <link>http://permalink.gmane.org/gmane.comp.emulators.libvirt/79233</link>
    <description>&lt;pre&gt;
Thanks, pushed.

Martin

&lt;/pre&gt;</description>
    <dc:creator>Martin Kletzander</dc:creator>
    <dc:date>2013-05-24T13:30:30</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79232">
    <title>Re: [libvirt] two hostdev devices problem</title>
    <link>http://permalink.gmane.org/gmane.comp.emulators.libvirt/79232</link>
    <description>&lt;pre&gt;Hi,
even lower number?

No,
When max_fs=10, macs in VM are OK.

Phisical interfaces:
eth0      Link encap:Ethernet  HWaddr b8:ca:3a:5b:a6:38
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1

eth1      Link encap:Ethernet  HWaddr b8:ca:3a:5b:a6:38
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1


Domain config:
&amp;lt;interface type="network"&amp;gt;
     &amp;lt;alias name="hostdev0"/&amp;gt;
     &amp;lt;source network="vnet0"/&amp;gt;
     &amp;lt;mac address="52:54:0a:b1:48:fc"/&amp;gt;
&amp;lt;/interface&amp;gt;
&amp;lt;interface type="network"&amp;gt;
     &amp;lt;alias name="hostdev1"/&amp;gt;
     &amp;lt;source network="vnet1"/&amp;gt;
     &amp;lt;mac address="52:54:0a:b1:48:fc"/&amp;gt;
 &amp;lt;/interface&amp;gt;

Networks defined:
&amp;lt;network&amp;gt;
  &amp;lt;name&amp;gt;vnet0&amp;lt;/name&amp;gt;
  &amp;lt;uuid&amp;gt;ec49896a-a0b5-4944-a81f-9f0cdf578871&amp;lt;/uuid&amp;gt;
  &amp;lt;forward mode='hostdev' managed='yes'&amp;gt;
    &amp;lt;pf dev='eth0'/&amp;gt;
  &amp;lt;/forward&amp;gt;
&amp;lt;/network&amp;gt;

&amp;lt;network&amp;gt;
  &amp;lt;name&amp;gt;vnet1&amp;lt;/name&amp;gt;
  &amp;lt;uuid&amp;gt;6c8319e8-8b53-4382-9f4e-2400819b00a9&amp;lt;/uuid&amp;gt;
  &amp;lt;forward mode='hostdev' managed='yes'&amp;gt;
    &amp;lt;pf dev='eth1'/&amp;gt;
  &amp;lt;/forward&amp;gt;
&amp;lt;/network&amp;gt;

Regards
Dominik

2013/5/24 Laine Stump &amp;lt;laine&amp;lt; at &amp;gt;laine.org&amp;gt;:



--
Pozdrawiam
Dominik

&lt;/pre&gt;</description>
    <dc:creator>Dominik Mostowiec</dc:creator>
    <dc:date>2013-05-24T13:16:31</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.emulators.libvirt/79231">
    <title>Re: [libvirt] [PATCH 2/2] Adapt to new VIR_STRNDUP behavior</title>
    <link>http://permalink.gmane.org/gmane.comp.emulators.libvirt/79231</link>
    <description>&lt;pre&gt;

Or we can even go with 'VIR_STRNDUP(arg, curr, next - curr) &amp;lt; 0' but
that's not so easy to read. The rationale behind is: I intentionally
made VIR_STRNDUP to accept *any* negative value, not just -1. Because if
strrchr(cur, '\n') just a few lines above fails, next is just NULL.
Deducting from NULL will get a negative value. Which will make
VIR_STRNDUP duplicate the while string. But I worry that it would be an
ugly code, wouldn't it?

Michal

&lt;/pre&gt;</description>
    <dc:creator>Michal Privoznik</dc:creator>
    <dc:date>2013-05-24T12:57:59</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.comp.emulators.libvirt">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.comp.emulators.libvirt</link>
  </textinput>
</rdf:RDF>
