pkgsrc-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[pkgsrc/trunk]: pkgsrc/pkgtools/pkglint/files - Added some more state transit...



details:   https://anonhg.NetBSD.org/pkgsrc/rev/1ceff4da74b5
branches:  trunk
changeset: 506506:1ceff4da74b5
user:      rillig <rillig%pkgsrc.org@localhost>
date:      Tue Jan 17 23:01:17 2006 +0000

description:
- Added some more state transitions and warnings to the shellword parser.
  It has come to the point where almost any further improvement means to
  adopt a real recursive parser.

diffstat:

 pkgtools/pkglint/files/pkglint.pl |  26 +++++++++++++++++++++++++-
 1 files changed, 25 insertions(+), 1 deletions(-)

diffs (48 lines):

diff -r 0b8d37641756 -r 1ceff4da74b5 pkgtools/pkglint/files/pkglint.pl
--- a/pkgtools/pkglint/files/pkglint.pl Tue Jan 17 22:50:36 2006 +0000
+++ b/pkgtools/pkglint/files/pkglint.pl Tue Jan 17 23:01:17 2006 +0000
@@ -1,5 +1,5 @@
 #! @PERL@
-# $NetBSD: pkglint.pl,v 1.476 2006/01/16 01:37:39 rillig Exp $
+# $NetBSD: pkglint.pl,v 1.477 2006/01/17 23:01:17 rillig Exp $
 #
 
 # pkglint - static analyzer and checker for pkgsrc packages
@@ -2174,6 +2174,13 @@
                        if ($rest =~ s/^\`//) {
                                $state = SWST_PLAIN;
                        } elsif ($rest =~ s/^[^\\\"\'\`\$]+//) {
+                       } elsif ($rest =~ s/^'//) {
+                               $state = SWST_BACKT_SQUOT;
+                       } elsif ($rest =~ s/^"//) {
+                               $state = SWST_BACKT_DQUOT;
+                       } elsif ($rest =~ s/^\\[\\\$\`]//) {
+                       } elsif ($rest =~ s/^\\//) {
+                               $line->log_warning("Backslashes should be doubled inside backticks.");
                        } elsif ($rest =~ s/^\$\$\{([0-9A-Za-z_]+)\}//
                            || $rest =~ s/^\$\$([0-9A-Za-z_]+)//) {
                                my ($shvarname) = ($1);
@@ -2185,6 +2192,23 @@
                                last;
                        }
 
+               } elsif ($state == SWST_BACKT_SQUOT) {
+                       if ($rest =~ s/^'//) {
+                               $state = SWST_BACKT;
+                       } elsif ($rest =~ s/^\\[\\\`\$]//) {
+                       } elsif ($rest =~ s/^[^\\]+//) {
+                       } else {
+                               last;
+                       }
+
+               } elsif ($state == SWST_BACKT_DQUOT) {
+                       if ($rest =~ s/^"//) {
+                               $state = SWST_BACKT;
+                       } elsif ($rest =~ s/^[^\\\"\'\`\$]+//) {
+                       } else {
+                               last;
+                       }
+
                } else {
                        last;
                }



Home | Main Index | Thread Index | Old Index