version 1.8, 2005/05/20 19:36:34 |
version 1.11, 2010/03/03 21:15:20 |
|
|
package OpenBSDTorrents; |
package OpenBSDTorrents; |
#$Id$ |
#$RedRiver: OpenBSDTorrents.pm,v 1.10 2007/11/02 02:36:01 andrew Exp $ |
use 5.008005; |
use 5.008005; |
use strict; |
use strict; |
use warnings; |
use warnings; |
|
|
|
|
our @EXPORT = qw( |
our @EXPORT = qw( |
$OBT |
$OBT |
|
$INSTALL_ISO_REGEX |
&Name_Torrent |
&Name_Torrent |
&Get_Files_and_Dirs |
&Get_Files_and_Dirs |
&justme |
&justme |
|
|
|
|
my $config_file = '/etc/OpenBSDTorrents.conf'; |
my $config_file = '/etc/OpenBSDTorrents.conf'; |
our $OBT = Config(); |
our $OBT = Config(); |
|
our $INSTALL_ISO_REGEX = qr/install\d+\.iso/; |
|
|
sub Config |
sub Config |
{ |
{ |
|
|
# bit safer, but I can't think of what would work here. |
# bit safer, but I can't think of what would work here. |
if ($val =~ /^(.*)$/) { |
if ($val =~ /^(.*)$/) { |
$config{$name} = $1; |
$config{$name} = $1; |
|
$config{$name} =~ s/^['"]|["']$//gxms; |
} |
} |
} |
} |
close FILE; |
close FILE; |
|
|
opendir DIR, $basedir or die "Couldn't opendir $basedir: $!"; |
opendir DIR, $basedir or die "Couldn't opendir $basedir: $!"; |
my @contents = sort grep { ! /^\.\.$/ } grep { ! /^\.$/ } readdir DIR; |
my @contents = sort grep { ! /^\.\.$/ } grep { ! /^\.$/ } readdir DIR; |
closedir DIR; |
closedir DIR; |
my @dirs = grep { -d "$basedir/$_" } @contents; |
|
|
|
my %dirs; # lookup table |
my @dirs; |
my @files;# answer |
my @files; |
|
ITEM: foreach my $item (@contents) { |
# build lookup table |
if ( -d "$basedir/$item" ) { |
@dirs{@dirs} = (); |
if ( $OBT->{SKIP_DIRS} |
|
&& $item =~ /$OBT->{SKIP_DIRS}/) { |
foreach my $item (@contents) { |
next ITEM; |
push(@files, $item) unless exists $dirs{$item}; |
} |
|
push @dirs, $item; |
|
} |
|
else { |
|
if ( $OBT->{SKIP_FILES} |
|
&& $item =~ /$OBT->{SKIP_FILES}/) { |
|
next ITEM; |
|
} |
|
push @files, $item; |
|
} |
} |
} |
|
|
@dirs = grep { ! /$OBT->{SKIP_DIRS}/ } @dirs |
|
if $OBT->{SKIPDIRS}; |
|
@files = grep { ! /$OBT->{SKIP_FILES}/ } @files |
|
if $OBT->{SKIP_FILES}; |
|
|
|
return \@dirs, \@files; |
return \@dirs, \@files; |
} |
} |