![]() ![]() |
hotsanic |
Subversion Repositories: |
Compare with Previous - Blame - Download
#!/usr/bin/env perluse warnings;use diagnostics;use strict;use Cwd;my $mydir=Cwd::cwd();my @path= split /\//,$mydir;my $subdir=pop @path;my $subsubdir=pop @path;my $modname="";my $type="";if ($subdir eq "lib") { $type="lib"; }if ($subdir eq "modules") { $type="allmods"; }if ($subdir eq "platform") { $type="module"; $modname=$subsubdir; chdir ".."; }if ($subsubdir eq "modules") { $type="module"; $modname=$subdir; }if ((-d "lib") and (-d "modules") and (-d "tools")) { $type="everything"; }print "$type\n";if ($type eq "module") { check_module($modname); }elsif ($type eq "allmods") { check_all_mods(); }elsif ($type eq "lib") { check_main_libs(); }elsif ($type eq "everything") { chdir "lib"; check_main_libs(); chdir "../modules"; check_all_mods(); }sub check_module {my $modname=shift;print "CHECKING MODULE ",uc $modname,"\n";opendir DIR,"./platform";my @files= grep /\.pm$/,readdir DIR;closedir DIR;use lib "./platform";foreach my $nn (@files) {chomp $nn;print " $modname/$nn\n";require "$nn";if ($nn ne "common.pm") {scrub_package("HotSaNICmod");scrub_package("syssnmp");}}print "\n";}sub check_all_mods {opendir DIR,".";my @modules = grep !/\.|CVS/,readdir DIR;closedir DIR;foreach my $modname (@modules) {if (-d $modname) {print $modname;chdir $modname;check_module($modname);chdir "..";}}}sub check_main_libs {print "CHECKING MAIN LIBRARIES\n";opendir DIR,".";my @files= grep /\.pm$/,readdir DIR;closedir DIR;chdir "CVS";use lib "..";foreach my $nn (@files) {chomp $nn;print " $nn\n";require "$nn";}chdir "..";print "\n";}sub scrub_package {no strict 'refs';my $pack = shift;die "Shouldn't delete main package"if $pack eq "" || $pack eq "main";my $stash = *{$pack . '::'}{HASH};my $name;foreach $name (keys %$stash) {my $fullname = $pack . '::' . $name;# Get rid of everything with that name.undef $$fullname;undef @$fullname;undef %$fullname;undef &$fullname;undef *$fullname;}}