=================================================================== RCS file: /cvs/openbsd/OpenBSDTorrents/MakeTorrents.pl,v retrieving revision 1.1 retrieving revision 1.3 diff -u -r1.1 -r1.3 --- openbsd/OpenBSDTorrents/MakeTorrents.pl 2005/03/22 01:14:11 1.1 +++ openbsd/OpenBSDTorrents/MakeTorrents.pl 2005/03/22 23:07:23 1.3 @@ -1,4 +1,5 @@ #!/usr/bin/perl -T +#$Id: MakeTorrents.pl,v 1.3 2005/03/22 23:07:23 andrew Exp $ use strict; use warnings; use diagnostics; @@ -9,14 +10,17 @@ my $BaseDir = '/home/ftp/pub'; my $BaseName = 'OpenBSD'; -my $OutDir = '/home/andrew'; +my $OutDir = '/home/andrew/torrents'; my $BTMake = '/usr/local/bin/btmake'; my $Tracker = 'http://OpenBSD.somedomain.net/announce.php'; +my $MinFiles = 5; + # These are regexes that tell what files to skip; -my $SkipDirs; +my $SkipDirs = qr/\/patches$/; my $SkipFiles = qr/^\./; + my $StartDir = shift || $BaseName; $StartDir =~ s#/$##; @@ -32,6 +36,10 @@ if (@$files) { Make_Torrent($basedir, $files); } + + # don't recurse if we were called on a specific directory + return 1 if $StartDir ne $BaseName; + foreach my $subdir (@$dirs) { #next if $subdir eq '.'; #next if $subdir eq '..'; @@ -44,35 +52,49 @@ my $basedir = shift; my $files = shift; - if ($basedir =~ /^([\w\/\.-]+)$/) { + if ($#files < $MinFiles) { + print "Too few files in $basedir, skipping . . .\n"; + return undef; + } + + if ($basedir !~ /\.\./ && $basedir =~ /^([\w\/\.-]+)$/) { $basedir = $1; } else { die "Invalid characters in dir '$basedir'"; } foreach (@$files) { - if (/^([\w\.-]+)$/) { + if (/^([^\/]+)$/) { $_ = "$basedir/$1"; } else { die "Invalid characters in file '$_' in '$basedir'"; } } + my $date = Torrent_Date(); + my $torrent = $basedir; $torrent =~ s/\W/_/g; - $torrent .= '-' . Torrent_Date(); + $torrent .= '-' . $date; $torrent .= '.torrent'; - print Dump $torrent, $basedir, $files; + #print Dump $torrent, $basedir, $files; print "Creating $torrent\n"; + my $comment = "Files from $basedir\n" . + "Created by andrew fresh (andrew\@mad-techies.org)\n" . + "http://OpenBSD.somedomain.net/", + system($BTMake, + '-C', + '-c', $comment, '-n', $BaseName, '-o', "$OutDir/$torrent", '-a', $Tracker, @$files );# || die "Couldn't system $BTMake $torrent: $!"; } + sub Get_Files_and_Dirs {