=================================================================== RCS file: /cvs/openbsd/OpenBSDTorrents/CurrentTorrents.pl,v retrieving revision 1.23 retrieving revision 1.26 diff -u -r1.23 -r1.26 --- openbsd/OpenBSDTorrents/CurrentTorrents.pl 2007/10/01 21:17:23 1.23 +++ openbsd/OpenBSDTorrents/CurrentTorrents.pl 2009/10/20 20:04:28 1.26 @@ -1,5 +1,5 @@ #!/usr/bin/perl -T -#$RedRiver: CurrentTorrents.pl,v 1.22 2006/07/24 18:03:53 andrew Exp $ +#$RedRiver: CurrentTorrents.pl,v 1.25 2008/11/14 18:18:31 andrew Exp $ use strict; use warnings; use diagnostics; @@ -79,7 +79,8 @@ closedir DIR; } -foreach my $name (keys %{ $files{torrent} }) { +#print Dump \%files; +foreach my $name (sort keys %{ $files{torrent} }) { next unless $name =~ /^$Name_Filter/; #print "Checking $name\n"; @@ -109,14 +110,16 @@ if ($@) { warn "Error reading torrent $torrent\n"; + push @delete, $files{torrent}{$name}{$epoch}; + delete $files{torrent}{$name}{$epoch}; next; } $files{torrent}{$name}{$epoch}{comment} = $t->{comment}; - my ($path) = $t->{comment} =~ /Files from ([^\n]+)\n/s; + my ($path) = $t->{comment} =~ /($OBT->{BASENAME}\/[^\n]+)\n/s; - unless (-d $OBT->{DIR_FTP} . "/$path") { - #print "Deleting $files{torrent}{$name}{$epoch}{file} the path doesn't exist.\n"; + unless (-e $OBT->{DIR_FTP} . "/$path") { + print "Deleting $files{torrent}{$name}{$epoch}{file} the path ($path) doesn't exist.\n"; push @delete, $files{torrent}{$name}{$epoch}; delete $files{torrent}{$name}{$epoch}; next; @@ -132,6 +135,12 @@ if (exists $keep{$name}) { if (exists $keep{$name}{$hash}) { + if ( $keep{$name}{$hash}{epoch} == $epoch ) { + next; + } + print "Removing [$name] [$hash]\n\t", + $keep{$name}{$hash}{path}, + "\n"; push @delete, $keep{$name}{$hash}; delete $files{torrent}{ $keep{$name}{$hash}{name} @@ -140,11 +149,22 @@ }; $keep{$name}{$hash} = $files{torrent}{$name}{$epoch}; + print "Keeping additional instance of [$name] [$hash]\n\t", + $keep{$name}{$hash}{path}, + "\n"; } else { + print "Removing old [$name] [$hash]\n"; + if ( $keep{$name}{$hash}{path} ) { + print "\t", $keep{$name}{$hash}{path}, + "\n"; + } push @delete, $files{torrent}{$name}{$epoch}; delete $files{torrent}{$name}{$epoch}; } } else { + print "Keeping first instance of $name [$hash]\n\t", + $files{torrent}{$name}{$epoch}{path}, + "\n"; $keep{$name}{$hash} = $files{torrent}{$name}{$epoch}; @@ -174,8 +194,8 @@ #print Dump \%keep; foreach my $name (keys %keep) { foreach my $hash (keys %{ $keep{$name} }) { - my $file = $keep{$name}{$hash}{file}; - my $dir = $keep{$name}{$hash}{dir }; + my $file = $keep{$name}{$hash}{file} || q{}; + my $dir = $keep{$name}{$hash}{dir } || q{}; if ($dir eq $OBT->{DIR_NEW_TORRENT}) { print "Moving $file to current torrents\n"; rename("$dir/$file", $OBT->{DIR_TORRENT} . "/" . $file) @@ -207,6 +227,13 @@ my $torrent = Name_Torrent($dir); $torrent =~ s/-.*$//; $Possible_Torrents{$torrent} = 1; + foreach my $file (@$files) { + if ($file =~ /$INSTALL_ISO_REGEX/) { + $torrent = Name_Torrent("$dir/$file"); + $torrent =~ s/-.*$//; + $Possible_Torrents{$torrent} = 1; + } + } } foreach my $subdir (@$dirs) {