=================================================================== RCS file: /cvs/openbsd/fill_chroot/find_depends,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- openbsd/fill_chroot/find_depends 2007/05/16 20:55:42 1.6 +++ openbsd/fill_chroot/find_depends 2008/04/22 21:08:41 1.7 @@ -1,5 +1,5 @@ #!/usr/bin/perl -# $RedRiver: find_depends,v 1.5 2005/12/21 19:14:12 andrew Exp $ +# $RedRiver: find_depends,v 1.6 2007/05/16 19:55:42 andrew Exp $ use strict; use warnings; @@ -66,7 +66,7 @@ my @libs = search_file($file); foreach (@libs) { - my ($name, $maj, $min) = $_ =~ /^([^\.]+)\.so\.(\d+)\.(\d+)$/; + my ($name, $maj, $min) = $_ =~ /lib([^\/]+)\.so\.(\d+)\.(\d+)$/; my $spec = 'l' . $name . '.' . $maj . '.' . $min; if (exists $ld->{$spec}) { @@ -88,18 +88,13 @@ { my $file = shift; my @libs; - - open my $libs, '<', $file or die "Couldn't open lib '$file': $!"; - local $/ = chr(0); + + open my $libs, '-|', '/usr/bin/ldd', $file or die "Couldn't open ldd '$file': $!"; while (<$libs>) { - if (m|^(/[^\w\/]+/)?lib(\S+)\.(\d+)\.(\d+)|) { - my ($path, $name, $major, $minor) = ($1, $2, $3, $4); - my $spec="$name.$major.$minor"; - if (defined $path && $path ne '/usr/local/lib') { - $spec="$path/$spec"; - } - push @libs, $spec; - } + chomp; + my $spec = substr $_, 56; + next if $spec !~ m{^/}xms; + push @libs, $spec; } close $libs;