diff options
Diffstat (limited to 'libjava/classpath/scripts/patches.pl')
-rwxr-xr-x | libjava/classpath/scripts/patches.pl | 164 |
1 files changed, 0 insertions, 164 deletions
diff --git a/libjava/classpath/scripts/patches.pl b/libjava/classpath/scripts/patches.pl deleted file mode 100755 index 57f134d..0000000 --- a/libjava/classpath/scripts/patches.pl +++ /dev/null @@ -1,164 +0,0 @@ -#!/usr/bin/perl -w -# Purpose is to move patches from upload directory to -# public patches directory. Any file not matching the correct -# pattern is deleted. Any patch file without a README and the -# file was last modified more than 120 minutes ago is deleted. -# Any README file without a patch file which was last modified -# more than 120 minutes ago is deleted. -# -# notes to self: as long as this runs as root do not worry -# about quota problems or disk space - -use strict; - -my ($upload_dir) = "/home/ftp/classpath/incoming"; -my ($public_dir) = "/home/ftp/classpath/pub/patches"; -my ($user) = "classpath"; -my ($group) = "classpath"; -my ($mode_dir) = "775"; -my ($mode_file) = "664"; -my (@patches) = (); - -use vars qw($upload_dir $public_dir @patches $user $group - $mode_dir $mode_file); - -# main -{ - @patches = &getPatches(); - &movePatches(@patches); -} - -#--------------------------------------------------------------- -# Purpose: To remove files not matching the correct pattern. -# To remove README files without patches (last modified greater -# than 2 hours). To remove patches without README files (last -# modified greater than 2 hours). -#--------------------------------------------------------------- -sub getPatches -{ - my (@patches) = (); - my (@entries) = (); - my (%maybe) = (); - my ($entry, $debug, $prefix, $junk, $file, $patch, $readme) = ""; - my ($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size, $atime, - $mtime, $ctime, $blksize, $blocks) = ""; - - $debug = 1; - - opendir(INCOMING, "$upload_dir") || die "could not open $upload_dir\n"; - @entries = grep( !/^\.\S+/, readdir(INCOMING)); # no .* - closedir(INCOMING); - foreach $entry (sort @entries) - { - if (($entry eq ".") || ($entry eq "..")) { next; } - if (-d "$upload_dir/$entry") - { - print "Directory: $upload_dir/$entry/\n"; - } - elsif (-e "$upload_dir/$entry") - { - if ($entry eq ".message") { next; } - if ($entry eq "README") { next; } - if ($entry !~ /^\w+-\d\d\d\d\d\d-\d+\.patch\.(gz|README)$/) - { - print "REGEX FAILED: $entry\n"; - unlink("$upload_dir/$entry"); - } - else - { - ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime, - $ctime,$blksize,$blocks) = stat("$upload_dir/$entry"); - if ($size > 512000) - { - print "LARGE PATCH: $entry\n"; - unlink("$upload_dir/$entry"); - } - else - { - ($prefix,$junk) = split(/(\.gz|\.README)/, $entry, 2); - $maybe{$prefix} += 1; - } - } - } - } - - foreach $entry (keys(%maybe)) - { - if ($maybe{$entry} == 2) - { - $patch = "$entry.gz"; - $readme = "$entry.README"; - - ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime, - $ctime,$blksize,$blocks) = stat($patch); - if (time-$mtime > 900) - { - ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime, - $ctime,$blksize,$blocks) = stat($readme); - if (time-$mtime > 900) - { - $patches[$#patches+1] = $entry; - } - } - } - else - { - if (-e "$upload_dir/$entry.gz") - { - unlink("$upload_dir/$entry.gz"); - print "STALE PATCH: $entry.gz\n"; - } - elsif (-e "$upload_dir/$entry.README") - { - unlink("$upload_dir/$entry.README"); - print "STALE README: $entry.README\n"; - } - } - } - return (@patches); -} - -#--------------------------------------------------------------- -# Purpose: To move the patches to the proper directory and set -# the permissions correctly. -#--------------------------------------------------------------- -sub movePatches -{ - my (@patches) = @_; - my ($patch) = ""; - my ($fail) = 0; - - if (!(-d "$public_dir")) - { - system("mkdir -p $public_dir"); - system("chown $user.$group $public_dir"); - system("chmod $mode_dir $public_dir"); - } - foreach $patch (@patches) - { - if (-e "$public_dir/$patch.gz") - { - print "Patch exists: $public_dir/$patch.gz\n"; - $fail = 1; - } - if (-e "$public_dir/$patch.README") - { - print "README exists: $public_dir/$patch.README\n"; - $fail = 1; - } - if ($fail == 0) - { - system("mv $upload_dir/$patch.gz $public_dir/$patch.gz"); - system("mv $upload_dir/$patch.README $public_dir/$patch.README"); - system("chown $user.$group $public_dir/*"); - system("chmod $mode_file $public_dir/*"); - open(MAIL, "|mail -s \"Classpath: $patch uploaded\" core\@classpath.org") || die "could not open mail\n"; - print MAIL "GNU Classpath FTP Maintenance\n"; - print MAIL "\n"; - print MAIL "Added Files:\n"; - print MAIL "ftp://ftp.classpath.org/pub/patches/$patch.gz\n"; - print MAIL "ftp://ftp.classpath.org/pub/patches/$patch.README\n\n"; - close(MAIL); - } - } -} |