A simple test script should illustrate the problem with the proposed
change:

#!/usr/bin/perl

my @tests = qw:/usr/share/foo/foo1.2la /usr/lib/foo/foo1.2la
/usr/share/foo/foo1.2.la /usr/lib/foo/foo1.2.la
/usr/lib/qof.la /usr/lib/qof-1.la /usr/lib/qof-%DF_1.la
/usr/lib/qof.lai /usr/lib/qof.laitrtl /usr/lib/qof]zd.la
/usr/lib/qof-~1.la /usr/lib/qof%d.la /usr/lib/qof-_1.la:;
my $crosslib = "/usr/arm-linux-gnu";
foreach my $t (@tests)
{
        $safe = $t;
        $t =~ s/\S+\/(\w+.la)$/$crosslib\/$1/g;
        print "$t\n";
        $t = $safe;
        $t =~ s/\S+\/([\w-.]+\.la)/$crosslib\/$1/g;
        print "\t$t\n";
        $t = $safe;
        $t =~ s/\S+\/([\w\.\-]+\.la)$/$crosslib\/$1/g;
        print "\t\t$t\n";
}

First reg exp is the current version (buggy).
Second reg exp is the proposal from this bug report.
Third is my proposed fix.

output:

/usr/share/foo/foo1.2la
        /usr/share/foo/foo1.2la
                /usr/share/foo/foo1.2la
/usr/lib/foo/foo1.2la
        /usr/lib/foo/foo1.2la
                /usr/lib/foo/foo1.2la
/usr/share/foo/foo1.2.la
        /usr/arm-linux-gnu/foo1.2.la
                /usr/arm-linux-gnu/foo1.2.la
/usr/lib/foo/foo1.2.la
        /usr/arm-linux-gnu/foo1.2.la
                /usr/arm-linux-gnu/foo1.2.la
/usr/arm-linux-gnu/qof.la
        /usr/arm-linux-gnu/qof.la
                /usr/arm-linux-gnu/qof.la
/usr/lib/qof-1.la
        /usr/arm-linux-gnu/qof-1.la
                /usr/arm-linux-gnu/qof-1.la
/usr/lib/qof-%DF_1.la
        /usr/lib/qof-%DF_1.la
                /usr/lib/qof-%DF_1.la
/usr/lib/qof.lai
        /usr/arm-linux-gnu/qof.lai
                /usr/lib/qof.lai
/usr/lib/qof.laitrtl
        /usr/arm-linux-gnu/qof.laitrtl
                /usr/lib/qof.laitrtl
/usr/lib/qof]zd.la
        /usr/lib/qof]zd.la
                /usr/lib/qof]zd.la
/usr/lib/qof-~1.la
        /usr/lib/qof-~1.la
                /usr/lib/qof-~1.la
/usr/lib/qof%d.la
        /usr/lib/qof%d.la
                /usr/lib/qof%d.la
/usr/lib/qof-_1.la
        /usr/arm-linux-gnu/qof-_1.la
                /usr/arm-linux-gnu/qof-_1.la

The difference is here:

/usr/lib/qof.lai
        /usr/arm-linux-gnu/qof.lai
                /usr/lib/qof.lai
/usr/lib/qof.laitrtl
        /usr/arm-linux-gnu/qof.laitrtl
                /usr/lib/qof.laitrtl

lai and laitrl (made-up) files should not match this reg exp.

Escaping the '.' makes no difference.

Is '~' valid in such a context? Is it worth specifically including?

-       $t =~ s/\S+\/([\w\.\-]+\.la)$/$crosslib\/$1/g;
+       $t =~ s/\S+\/([\w\.\-\~]+\.la)$/$crosslib\/$1/g;


-- 


Neil Williams
=============
http://www.data-freedom.org/
http://www.nosoftwarepatents.com/
http://www.linux.codehelp.co.uk/


Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to