diff options
author | Alexander Sulfrian <alexander@sulfrian.net> | 2013-01-17 03:16:40 +0100 |
---|---|---|
committer | Alexander Sulfrian <alexander@sulfrian.net> | 2013-01-17 03:16:40 +0100 |
commit | 41f36a2a7ca5bccddba4401dcfd49cc403b45364 (patch) | |
tree | 6c94690685cca0547054fdf1a6af391cf3316370 /inc/Module/Install/Base.pm | |
parent | e0ebb260d85560d4e159bc4b748519b4207592db (diff) | |
download | vserver-perl-41f36a2a7ca5bccddba4401dcfd49cc403b45364.tar.gz vserver-perl-41f36a2a7ca5bccddba4401dcfd49cc403b45364.tar.bz2 vserver-perl-41f36a2a7ca5bccddba4401dcfd49cc403b45364.zip |
Module::Install: add to distribution1.0
Diffstat (limited to 'inc/Module/Install/Base.pm')
-rw-r--r-- | inc/Module/Install/Base.pm | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/inc/Module/Install/Base.pm b/inc/Module/Install/Base.pm new file mode 100644 index 0000000..b55bda3 --- /dev/null +++ b/inc/Module/Install/Base.pm @@ -0,0 +1,83 @@ +#line 1 +package Module::Install::Base; + +use strict 'vars'; +use vars qw{$VERSION}; +BEGIN { + $VERSION = '1.00'; +} + +# Suspend handler for "redefined" warnings +BEGIN { + my $w = $SIG{__WARN__}; + $SIG{__WARN__} = sub { $w }; +} + +#line 42 + +sub new { + my $class = shift; + unless ( defined &{"${class}::call"} ) { + *{"${class}::call"} = sub { shift->_top->call(@_) }; + } + unless ( defined &{"${class}::load"} ) { + *{"${class}::load"} = sub { shift->_top->load(@_) }; + } + bless { @_ }, $class; +} + +#line 61 + +sub AUTOLOAD { + local $@; + my $func = eval { shift->_top->autoload } or return; + goto &$func; +} + +#line 75 + +sub _top { + $_[0]->{_top}; +} + +#line 90 + +sub admin { + $_[0]->_top->{admin} + or + Module::Install::Base::FakeAdmin->new; +} + +#line 106 + +sub is_admin { + ! $_[0]->admin->isa('Module::Install::Base::FakeAdmin'); +} + +sub DESTROY {} + +package Module::Install::Base::FakeAdmin; + +use vars qw{$VERSION}; +BEGIN { + $VERSION = $Module::Install::Base::VERSION; +} + +my $fake; + +sub new { + $fake ||= bless(\@_, $_[0]); +} + +sub AUTOLOAD {} + +sub DESTROY {} + +# Restore warning handler +BEGIN { + $SIG{__WARN__} = $SIG{__WARN__}->(); +} + +1; + +#line 159 |