=================================================================== RCS file: /cvs/openbsd/OpenBSDTorrents/CurrentTorrents.pl,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- openbsd/OpenBSDTorrents/CurrentTorrents.pl 2005/05/04 01:48:35 1.15 +++ openbsd/OpenBSDTorrents/CurrentTorrents.pl 2005/05/05 02:09:43 1.16 @@ -1,10 +1,11 @@ #!/usr/bin/perl -T -#$Id: CurrentTorrents.pl,v 1.15 2005/05/04 00:48:35 andrew Exp $ +#$Id: CurrentTorrents.pl,v 1.16 2005/05/05 01:09:43 andrew Exp $ use strict; use warnings; use diagnostics; use Time::Local; +use Fcntl ':flock'; use lib 'lib'; use OpenBSDTorrents; @@ -87,7 +88,23 @@ next; } + my $meta_file = $torrent; + $meta_file =~ s/\.torrent$/.$OBT->{META_EXT}/; + my $hash = undef; + if (-e $meta_file) { + #print "Reading meta file: $meta_file\n"; + open my $meta, $meta_file + or die "Couldn't open $meta_file: $!"; + flock($meta, LOCK_SH); + binmode $meta; + + $hash = do { local $/; <$meta> }; + + flock($meta, LOCK_UN); + close $meta; + } else { + my $t; eval { $t = BT::OBTMetaInfo->new( $torrent ); }; @@ -106,12 +123,15 @@ next; } - my $hash = $t->info_hash_cached($torrent); + $hash = $t->info_hash_cached($torrent); $hash = unpack("H*", $hash); + undef $t; + + } + $files{torrent}{$name}{$epoch}{info_hash} = $hash; - undef $t; if (exists $keep{$name}) { if (exists $keep{$name}{$hash}) {