[BACK]Return to find_depends CVS log [TXT][DIR] Up to [local] / openbsd / fill_chroot

Diff for /openbsd/fill_chroot/find_depends between version 1.3 and 1.4

version 1.3, 2005/12/21 18:22:32 version 1.4, 2005/12/21 18:37:38
Line 1 
Line 1 
 #!/usr/bin/perl  #!/usr/bin/perl
 # $RedRiver: find_depends,v 1.2 2005/12/21 18:16:03 andrew Exp $  # $RedRiver: find_depends,v 1.3 2005/12/21 18:22:32 andrew Exp $
 use strict;  use strict;
 use warnings;  use warnings;
   
 # find /home/andrew/www/ -name *.so* | xargs find_depends \  use Data::Dumper;
 #      | sort -u | xargs -I {} cp {} /home/andrew/www{}  
   
 my @Files;  
 my %opts;  my %opts;
   my @Files;
   
 foreach (@ARGV) {  foreach (@ARGV) {
   if (/^-(\w+)$/) {    if (/^-+(\w+)$/) {
     $opts{$1} = 1;      $opts{$1} = 1;
   } else {    } else {
     push @Files, $_;      push @Files, $_;
   }    }
 }  }
   
 die unless @Files;  Help()  if $opts{h} || $opts{help};
   Usage() unless @Files;
   
 my %libs;  my %libs;
   
Line 35 
Line 35 
   
 exit;  exit;
   
   sub Usage
   {
     print "Usage: $0 [-v] file [file2 [file3 [...]]]\n";
     exit;
   }
   
   sub Help
   {
     print <<EOL;
   Hopefully finds all libraries that are required by an executable
   or shared library.
   
   Usage:
     $0 [-v] file [file2 [file3 [...]]]
   
   Example:
     find /var/www/ -name *.so* | xargs find_depends | \\
          sort -u | xargs -I {} cp {} /var/www{}
   EOL
   
     exit;
   }
   
 sub find_libs  sub find_libs
 {  {
   my $file = shift;    my $file = shift;
   my $ld   = shift || get_ldconfig();    my $ld   = shift || get_ldconfig();
   my $locs = shift || {};    my $locs = shift || {};
   
   print STDERR "Finding libs for '$file'\n" unless $opts{q};    print STDERR "Finding libs for '$file'\n" if $opts{v};
   
   my @libs = search_file($file);    my @libs = search_file($file);
   foreach (@libs) {    foreach (@libs) {
Line 68 
Line 91 
   my $file = shift;    my $file = shift;
   my @libs;    my @libs;
   
   open my $libs, '<', $file or die;    open my $libs, '<', $file or die "Couldn't open lib '$file': $!";
   local $/ = chr(0);    local $/ = chr(0);
   while (<$libs>) {    while (<$libs>) {
     if (m|^(/[^\w\/]+/)?lib(\S+)\.(\d+)\.(\d+)|) {      if (m|^(/[^\w\/]+/)?lib(\S+)\.(\d+)\.(\d+)|) {
Line 90 
Line 113 
   my $ldconfig = '/sbin/ldconfig';    my $ldconfig = '/sbin/ldconfig';
   my (%paths, %libs);    my (%paths, %libs);
   
   open my $ld, '-|', $ldconfig, '-r' or die;    open my $ld, '-|', $ldconfig, '-r'
       or die "Couldn't open pipe to ldconfig: $!";
   while (<$ld>) {    while (<$ld>) {
     chomp;      chomp;
     if (/search directories:\s+(.*)/) {      if (/search directories:\s+(.*)/) {

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>