OpenPKG CVS Repository
  http://cvs.openpkg.org/
  ____________________________________________________________________________

  Server: cvs.openpkg.org                  Name:   Ralf S. Engelschall
  Root:   /e/openpkg/cvs                   Email:  [EMAIL PROTECTED]
  Module: openpkg-re                       Date:   05-Apr-2003 21:24:50
  Branch: HEAD                             Handle: 2003040520244900

  Modified files:
    openpkg-re              speclint.pl

  Log:
    flush some pending changes

  Summary:
    Revision    Changes     Path
    1.7         +83 -2      openpkg-re/speclint.pl
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: openpkg-re/speclint.pl
  ============================================================================
  $ cvs diff -u -r1.6 -r1.7 speclint.pl
  --- openpkg-re/speclint.pl    24 Mar 2003 20:12:48 -0000      1.6
  +++ openpkg-re/speclint.pl    5 Apr 2003 19:24:49 -0000       1.7
  @@ -103,6 +103,7 @@
       header
       section
       preproc
  +    script
   ));
   my @checks = ();
   if ($check eq 'all') {
  @@ -200,7 +201,26 @@
       $done = ''; $this = ''; $todo = $spec;
       while ($todo =~ m/[ \t]+\r?\n/s) {
           $done .= $`; $this = $&; $todo = $';
  -        &lint_warning($file, $done, $this, "trailing whitespace (expected none)"); 
  +        if ($done eq '' or $done =~ m|\n$|s) {
  +            &lint_warning($file, $done, $this, "whitespace on empty line (expected 
none)");
  +        }
  +        else {
  +            &lint_warning($file, $done, $this, "trailing whitespace (expected 
none)"); 
  +        }
  +    }
  +
  +    #   check for bogus line continuations
  +    $done = ''; $this = ''; $todo = $spec;
  +    while ($todo =~ m/\\[ \t]*\r?\n(?=[ \t]*\r?\n)/s) {
  +        $done .= $`; $this = $&; $todo = $';
  +        &lint_warning($file, $done, $this, "bogus line continuation for following 
empty line");
  +    }
  +
  +    #   check for leading whitespaces befor line continuations
  +    $done = ''; $this = ''; $todo = $spec;
  +    while ($todo =~ m/[ \t]{2,}\\[ \t]*\r?\n/s) {
  +        $done .= $`; $this = $&; $todo = $';
  +        &lint_warning($file, $done, $this, "multiple leading whitespace before line 
continuation");
       }
   }
   
  @@ -476,6 +496,67 @@
           }
       }
   
  -    #   FIXME: check correct nesting, too.
  +    #   check correct if/endif nesting
  +    my @stack = ();
  +    $done = ''; $this = ''; $todo = $spec;
  +    while ($todo =~ m/^(%(?:if|else|endif|define|undefine|option)).*$/m) {
  +        $done .= $`; $this = $&; $todo = $';
  +        my $directive = $1;
  +        if ($directive eq '%if') {
  +            push(@stack, &lines($done . $this));
  +        }
  +        elsif ($directive eq '%endif') {
  +            if (@stack == 0) {
  +                &lint_error($file, $done, $this, "found \%endif without 
corresponding opening \%if");
  +                last;
  +            }
  +            pop(@stack);
  +        }
  +    }
  +    my $line;
  +    while (defined($line = pop(@stack))) {
  +        &lint_error($file, undef, undef, "\%if at line $line never closed by 
\%endif");
  +    }
  +}
  +
  +##  _________________________________________________________________
  +##
  +##  CHECK "script": shell scripts
  +##  _________________________________________________________________
  +##
  +
  +sub check_script {
  +    my ($file, $spec) = @_;
  +
  +    my $done = ''; my $this = ''; my $todo = $spec;
  +    while ($todo =~ 
m/\n(%(?:description|prep|build|install|files|clean|pre|post|preun|postun))([^\n]*)\n(.*?\n)(?=%(?:description|prep|build|install|files|clean|pre|post|preun|postun)|$)/s)
 {
  +        $done .= $`; $this = $&; $todo = $';
  +        my ($section, $args, $script) = ($1, $2, $3);
  +
  +        &check_script_common($file, $section, $args, $script);
  +
  +        if ($section eq 'description') {
  +        }
  +        elsif ($section eq 'prep') {
  +        }
  +        elsif ($section eq 'build') {
  +        }
  +        elsif ($section eq 'install') {
  +        }
  +        elsif ($section eq 'files') {
  +        }
  +        elsif ($section eq 'pre') {
  +        }
  +        elsif ($section eq 'post') {
  +        }
  +        elsif ($section eq 'preun') {
  +        }
  +        elsif ($section eq 'postun') {
  +        }
  +    }
  +}
  +
  +sub check_script_common {
  +    my ($file, $section, $args, $script) = @_;
   }
   
  @@ .
______________________________________________________________________
The OpenPKG Project                                    www.openpkg.org
CVS Repository Commit List                     [EMAIL PROTECTED]

Reply via email to