#!/usr/bin/env perl use 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; } }
hotsanic |
Subversion Repositories: |
Line No. | Rev | Author | Line |
---|