From 63011994c34389350c0c8fb0fb965fce7b6a5652 Mon Sep 17 00:00:00 2001 From: rillig Date: Fri, 4 Aug 2006 18:32:41 +0000 Subject: Added more code to the shell word parser so that it can parse variables, in double quotes or not, inside backticks. --- pkgtools/pkglint/files/pkglint.pl | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'pkgtools') diff --git a/pkgtools/pkglint/files/pkglint.pl b/pkgtools/pkglint/files/pkglint.pl index 5d2ee18e23c..b6e0f1a225a 100644 --- a/pkgtools/pkglint/files/pkglint.pl +++ b/pkgtools/pkglint/files/pkglint.pl @@ -1,5 +1,5 @@ #! @PERL@ -# $NetBSD: pkglint.pl,v 1.668 2006/08/01 08:58:49 rillig Exp $ +# $NetBSD: pkglint.pl,v 1.669 2006/08/04 18:32:41 rillig Exp $ # # pkglint - static analyzer and checker for pkgsrc packages @@ -4093,12 +4093,11 @@ sub checkline_mk_shellword($$$) { } 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_]+)//) { + || $rest =~ s/^\$\$([0-9A-Z_a-z]+|\$\$|[!#?\@])//) { my ($shvarname) = ($1); if ($opt_warn_quoting && $check_quoting) { $line->log_warning("Unquoted shell variable \$${shvarname}."); } - } else { last; } @@ -4115,7 +4114,14 @@ sub checkline_mk_shellword($$$) { } elsif ($state == SWST_BACKT_DQUOT) { if ($rest =~ s/^"//) { $state = SWST_BACKT; + } elsif ($rest =~ s/^[^\\\"\'\`\$]+//) { + + } elsif ($rest =~ s/^\\(?:[\\\"\`]|\$\$)//) { + + } elsif ($rest =~ s/^\$\$\{([0-9A-Za-z_]+)\}// + || $rest =~ s/^\$\$([0-9A-Z_a-z]+|\$\$|[!#?\@])//) { + my ($shvarname) = ($1); } else { last; } -- cgit v1.2.3