[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] [PATCH 2/2] syntax-check: mandate space after mid-line semicolon



On 25/05/13 01:19, Eric Blake wrote:
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 <eblake redhat com>
---
  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
@@ -318,6 +318,29 @@ 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 < limit ; ++i) { // Bad
+      for (i = 0; i < 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, &st, 0) == -1) && // ok
+             errno == EINTR);
+      while ((rc = waitpid(pid, &st, 0) == -1) && // 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
@@ -1,6 +1,7 @@
  #!/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
@@ -31,6 +32,9 @@ foreach my $file (@ARGV) {
      while (defined (my $line = <FILE>)) {
          my $data = $line;

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

@@ -125,6 +129,14 @@ foreach my $file (@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
@@ -845,7 +845,7 @@ 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 && exit 1)
+          (echo "$(ME): incorrect whitespace, see HACKING for rules" && exit 1)

I see you changed this when pushing:

- (echo $(ME): incorrect whitespace around brackets, see HACKING for rules && exit 1)
+         { echo "$(ME): incorrect whitespace, see HACKING for rules" 2>&; \
+           exit 1; }

But it breaks build. I guess you indented to write "2>&1" there.

Osier


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]