Quote package names in regexps
authorThadeu Lima de Souza Cascardo <cascardo@cascardo.eti.br>
Fri, 24 Apr 2015 09:40:00 +0000 (06:40 -0300)
committerThadeu Lima de Souza Cascardo <cascardo@cascardo.eti.br>
Fri, 24 Apr 2015 09:40:00 +0000 (06:40 -0300)
When interpolating packaga names in regexps, quote them, so package
names like g++-4.9 will not be considere as a regexp, preventing them to
match said package name.

debsort.pl

index 318e524..969f6f7 100644 (file)
@@ -132,20 +132,20 @@ push @visit, "build-essential";
 
 while (@visit) {
        my $n = pop @visit;
-       next if grep /^$n$/, @pp;
+       next if grep /^\Q$n\E$/, @pp;
        push @pp, $n;
        my $source = $csource{$n};
-       if ($source and !grep /^$source$/, @vsource) {
+       if ($source and !grep /^\Q$source\E$/, @vsource) {
                push @vsource, $source;
                for my $b (@{$bdeps{$source}}) {
-                       if (!grep /^$b$/, @pp && !grep /^$b$/, @visit) {
+                       if (!grep /^\Q$b\E$/, @pp && !grep /^\Q$b\E$/, @visit) {
                                push @visit, $b;
                        }
                }
        }
        my $l = $depends{$n};
        for my $d (@$l) {
-               if (!grep /^$d$/, @pp && !grep /^$d$/, @visit) {
+               if (!grep /^\Q$d\E$/, @pp && !grep /^\Q$d\E$/, @visit) {
                        push @visit, $d;
                }
        }