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

Osier Yang jyang at redhat.com
Tue May 28 15:28:16 UTC 2013


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 at 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




More information about the libvir-list mailing list