Fix brace matching on multiline constructs in perl.req (RhBug:752119)
authorJoshua Megerman <josh@honorablemenschen.com>
Wed, 14 Dec 2011 15:03:29 +0000 (17:03 +0200)
committerPanu Matilainen <pmatilai@redhat.com>
Wed, 14 Dec 2011 15:19:12 +0000 (17:19 +0200)
- /usr/lib/rpm/perl.req scans for the opening brace type on lines, but
  then only scans for closing curly braces ('}') instead of the proper
  losing brace type when that closing brace occures on a different line.
  This means that any use/require statements that occur after the
  multi-line q{} statement but before the first closing curly brace in
  the file will be ignored.

Signed-off-by: Panu Matilainen <pmatilai@redhat.com>
scripts/perl.req

index 90d8e6b..cd2cbde 100755 (executable)
@@ -120,8 +120,9 @@ sub process_file {
     if ( m/^.*\Wq[qxwr]?\s*([{([#|\/])[^})\]#|\/]*$/ && ! m/^\s*(require|use)\s/ ) {
       $tag = $1;
       $tag =~ tr/{\(\[\#|\//})]#|\//;
+      $tag = quotemeta($tag);
       while (<FILE>) {
-        ( $_ =~ m/\}/ ) && last;
+        ( $_ =~ m/$tag/ ) && last;
       }
     }