#!/usr/bin/perl =begin 25.05.2001 Version 0.1. Searching for files not owned to any package Written by Epiphanov Sergei 02.06.2001 Version 0.2. Changed the idea of the program. Added recursive flag. =cut use RPM::Database; $RPM=new RPM::Database; if (! defined @ARGV) { print "Usage:\n"; print " libsview [-R] dir\n\n"; print " -R - recursive\n"; exit; } if ($ARGV[0] eq "-R") { $Dir=$ARGV[1]; $Recursive=1; } else { $Dir=$ARGV[0]; $Recursive=0; } $Dir=~s |\/+$||; print "Starting search from $Dir.\n"; open (FILEOK,">fileok.txt"); open (FILERR,">filerr.txt"); open (STDERR,">ERROR.txt"); $SIG{INT}=\&INT_SIG; `renice 5 $$`; SearchDir ($Dir); close (FILEOK); close (FILERR); sub SearchDir { my $Dir=shift; local *DIRLOOK; opendir (DIRLOOK,$Dir) or die "Can't open ${Dir}!"; while (defined ($filename=readdir(DIRLOOK))) { $Cur="$Dir/$filename"; next if $filename=~/^\.\.?$/; if (defined ($package=$RPM->find_by_file($Cur))) { print FILEOK "$Cur is in ". $package->{"name"}."-" .$package->{"version"} . "\n"; } else { print FILERR "No package for $Cur\n"; } if ( -d $Cur && -r $Cur && $Recursive==1) { SearchDir ($Cur); } } closedir (DIRLOOK); } sub INT_SIG { close (FILEOK); close (FILERR); exit; }