#!/usr/bin/perl

@exclude = qw{
  /emul /emul/ia32-linux
};

%dirs = ();
%exclude = map {$_ => 1} @exclude;

my $pname = $::ENV{PNAME};
my $rname = '';
if (@ARGV) {
  $rname = shift @ARGV;
  $rname = "$rname: " if $rname ne '';
}

my %myfiles;

while (<STDIN>) {
  chomp;
  s/\/$//;
  $myfiles{$_} = 1;
  while (1) {
    last unless s/\/[^\/]*$//;
    last if $_ eq '' || $dirs{$_} || $exclude{$_};
    $dirs{$_} = 1;
  }
}

@dirs = sort keys %dirs;
@dirs = grep {!$myfiles{$_}} @dirs;

# batch files through rpm in chunks of 20
$num = 0;

while (@dirs) {
  @dirs20 = splice(@dirs, 0, 20);
  open(F, "rpm -qf '".join("' '", @dirs20)."' 2>&1 |") || die("rpm pipe\n");
  while (<F>) {
    chomp;
    next unless / /;
    next if /^tset: standard error: Invalid argument/;
    next if /^stty: standard input: Invalid argument/;
    next if /error while loading shared libraries:/;
    print "${rname}directories not owned by a package:\n" if $num == 0;
    if (/file (.*) is not owned/) {
      print " - $1\n";
    } elsif (/file (.*): No such/) {
      print " - $1\n";
    } else {
      print " - $_\n";
    }
    $num++;
  }
  close F;
}

exit $num ? 1 : 0;
