X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=utils%2Fcreate-package-feed.pl;h=e5050864779363d78f7cfcb98b3679bb82e3fb64;hp=1db8d64b5bbfbbaf3dad62a3cfe70c7c44d97867;hb=cae3149411d1f24e533eb6028e7fe5c3057c4626;hpb=602fb5343ffef4dd27f0e2c8e856b961ce822250
diff --git a/utils/create-package-feed.pl b/utils/create-package-feed.pl
index 1db8d64b..e5050864 100644
--- a/utils/create-package-feed.pl
+++ b/utils/create-package-feed.pl
@@ -3,78 +3,129 @@
use warnings;
use strict;
use Digest::SHA1;
-my @months=qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
-my @days=qw(Sun Mon Tue Wed Thu Fri Sat Sun);
+my @months = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
+my @days = qw(Sun Mon Tue Wed Thu Fri Sat Sun);
#< Config START >
-my $scan_dir='/xxxxxxxxxxxxxxxxxxxxxx/sf-download/';
-my $base_dlurl='https://www.privoxy.org/sf-download-mirror/';
-my $save_rss_file='/xxxxxxxxxxxxxxxxxxxxxx/release.xml';# e.g., release.rss
-my $maxlimit=10;
+my $scan_dir = '/xxxxxxxxxxxxxxxxxxxxxx/sf-download/';
+my $base_dlurl = 'https://www.privoxy.org/sf-download-mirror/';
+my $save_rss_file ='/xxxxxxxxxxxxxxxxxxxxxx/release.xml'; # e.g., release.rss
+my $maxlimit = 1000;
+my $max_advertised_files = 100;
+
#< Config END >
-my @Array=();
-my $i=0;
-my $sec;my $min;my $hour;my $mday;my $mon;my $year;my $wday;my $yday;my $isdst;
-my $target;my $target_sha1;my $target_uri;my $target_time;my $target_line;
+my @Array = ();
+my $i = 0;
+my $sec;
+my $min;
+my $hour;
+my $mday;
+my $mon;
+my $year;
+my $wday;
+my $yday;
+my $isdst;
+my $target;
+my $target_sha1;
+my $target_uri;
+my $target_time;
+my $target_line;
-#
+#
# 1st & 2nd directory should NOT contain ANY 'FILES'. (expecting only 'Directory')
-#
-opendir (D1,$scan_dir) or die "Can't open 1st directory! /";
-MOUT: while (my $fi1=readdir(D1)){
-next if ($fi1 =~ m/^\./);
+#
+opendir(my $D1, $scan_dir) or die "Can't open 1st directory! /";
+while (my $fi1 = readdir($D1)) {
+ next if ($fi1 =~ m/^\./);
-opendir (D2,$scan_dir.$fi1.'/') or die "Can't open 2nd directory! /$fi1";
-while (my $fi2=readdir(D2)){
-next if ($fi2 =~ m/^\./);
+ next if ($fi1 eq 'OldFiles' or $fi1 eq 'pkgsrc');
+ opendir(my $D2, $scan_dir . $fi1 . '/')
+ or die "Can't open 2nd directory! /$fi1";
+ while (my $fi2 = readdir($D2)) {
+ next if ($fi2 =~ m/^\./);
## start listing /OS/Version/FILE
-opendir (D3,$scan_dir.$fi1.'/'.$fi2.'/') or die "Can't open 3rd directory! /$fi1/$fi2";
-while (my $fi3=readdir(D3)){
-next if ($fi3 =~ m/^\./);
-$target=$scan_dir.$fi1.'/'.$fi2.'/'.$fi3;next if (! -e $target);# skip if file is not exist
+ opendir(my $D3, $scan_dir . $fi1 . '/' . $fi2 . '/')
+ or die "Can't open 3rd directory! /$fi1/$fi2";
+ while (my $fi3 = readdir($D3)) {
+ next if ($fi3 =~ m/^\./);
+ $target = $scan_dir . $fi1 . '/' . $fi2 . '/' . $fi3;
+ next if (!-e $target); # skip if file is not exist
-# Get SHA-1 hash
-my $filedata;
-unless (open $filedata,$target){next;}
-my $sha1 = Digest::SHA1->new;$sha1->addfile($filedata);close $filedata;
-$target_sha1=$sha1->hexdigest;
+ # Get SHA-1 hash
+ my $filedata;
+ open($filedata, "<", $target)
+ or die "Can't open '$target' to generate checksum $!";
+ my $sha1 = Digest::SHA1->new;
+ $sha1->addfile($filedata);
+ close($filedata);
+ $target_sha1 = $sha1->hexdigest;
-# URI and Time
-$target_uri=$fi1.'/'.$fi2.'/'.$fi3;
-$target_time=(stat $target)[9];
+ # URI and Time
+ $target_uri = $fi1 . '/' . $fi2 . '/' . $fi3;
+ $target_time = (stat $target)[9];
-# RSS line
-$target_line='- ';
-$target_line.='';
-$target_line.=''.$base_dlurl.$target_uri.''.$base_dlurl.$target_uri.'';
-$target_line.='';
-($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=gmtime($target_time);$target_line.="$days[$wday], $mday $months[$mon] ".($year+1900)." $hour:$min:$sec GMT";
-$target_line.='
';
+ # RSS line
+ $target_line =
+ '- ';
+ $target_line .=
+ '';
+ $target_line .=
+ ''
+ . $base_dlurl
+ . $target_uri
+ . ''
+ . $base_dlurl
+ . $target_uri
+ . '';
+ $target_line .= '';
+ ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) =
+ gmtime($target_time);
+ $target_line .=
+ "$days[$wday], $mday $months[$mon] "
+ . ($year + 1900)
+ . " $hour:$min:$sec GMT";
+ $target_line .= '
';
-# Add it to Array
-$Array[$i]=([$target_time,$target_line]);$i++;
-if ($i>=$maxlimit){last MOUT;}
-}
-closedir D3;
+ # Add it to Array
+ $Array[$i] = ([$target_time, $target_line]);
+ $i++;
+ die "maxlimit $maxlimit reached!" unless ($i < $maxlimit);
+ }
+ closedir($D3);
## end listing /OS/Version/FILE
-}
-closedir D2;
+ }
+ closedir($D2);
}
-closedir D1;
+closedir($D1);
# Result = Full XML Codes
-my $result='Privoxy Releaseshttps://www.privoxy.org/announce.txt';
-($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=gmtime();$result.="$days[$wday], $mday $months[$mon] ".($year+1900)." $hour:$min:$sec GMT";
-$result.='';
+my $result =
+ 'Privoxy Releaseshttps://www.privoxy.org/announce.txt';
+($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = gmtime();
+$result .=
+ "$days[$wday], $mday $months[$mon] "
+ . ($year + 1900)
+ . " $hour:$min:$sec GMT";
+$result .= '';
+
# Sort Array
-my @resArray=sort {@$a[0]<=>@$b[0]} @Array;$i--;
-while($i>=0){$result.=$resArray[$i][1];$i--;}
-$result.='';
+my @resArray = sort { @$a[0] <=> @$b[0] } @Array;
+$i--;
+while ($max_advertised_files-- > 0 && $i >= 0) {
+ $result .= $resArray[$i][1];
+ $i--;
+}
+$result .= '';
+
# Save it.
-open(XMLF,"> $save_rss_file") or die "Failed to write XML file";
-print XMLF $result;
-close(XMLF);
+open(my $XMLF, ">", $save_rss_file) or die "Failed to write XML file";
+print $XMLF $result;
+close($XMLF);