[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