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