[libvirt] [PATCH 31/31] syntax-check: Add the rule to forbid whitespace before "; "

Osier Yang jyang at redhat.com
Tue May 21 10:01:01 UTC 2013


Only a few cases are allowed:

1) The expression is empty for "for" loop, E.g.

  for (i = 0; ; i++)

2) An empty statement

  while (write(statuswrite, &status, 1) == -1 &&
         errno == EINTR)
      ; /* empty */

3) ";" is inside double-quote, I.e, as part of const string. E.g.

  vshPrint(ctl, "a ; b ; cd;\n");

The "for" loop in src/rpc/virnettlscontext.c is the special case,
1) applies for it, so change it together in this patch.
---
 build-aux/bracket-spacing.pl | 18 ++++++++++++++++++
 src/rpc/virnettlscontext.c   |  2 +-
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/build-aux/bracket-spacing.pl b/build-aux/bracket-spacing.pl
index d3a916f..0d5d2ed 100755
--- a/build-aux/bracket-spacing.pl
+++ b/build-aux/bracket-spacing.pl
@@ -109,6 +109,24 @@ foreach my $file (@ARGV) {
             $ret = 1;
             last;
         }
+
+        # Forbid whitespace before ";". Things like below are allowed:
+        #
+        # for (i = 0; ; i++)
+        #
+        # while (write(statuswrite, &status, 1) == -1 &&
+        #        errno == EINTR)
+        #     ;
+        #
+        # printf("%s", "a ; b\n");
+        while ($data =~ /[^;\s]\s+;/) {
+            # Inside the double-quote
+            if ($data !~ /"[^"]*\s;/) {
+                print "$file:$.: $line";
+                $ret = 1;
+            }
+            last;
+        }
     }
     close FILE;
 }
diff --git a/src/rpc/virnettlscontext.c b/src/rpc/virnettlscontext.c
index 1a7ccb8..305eee9 100644
--- a/src/rpc/virnettlscontext.c
+++ b/src/rpc/virnettlscontext.c
@@ -292,7 +292,7 @@ static int virNetTLSContextCheckCertKeyPurpose(gnutls_x509_crt_t cert,
     bool allowClient = false, allowServer = false;
 
     critical = 0;
-    for (i = 0 ; ; i++) {
+    for (i = 0; ; i++) {
         size = 0;
         status = gnutls_x509_crt_get_key_purpose_oid(cert, i, buffer, &size, NULL);
 
-- 
1.8.1.4




More information about the libvir-list mailing list