⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 patches.pl

📁 gcc的组建
💻 PL
字号:
#!/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 spaceuse 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);	}    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -