diff options
| author | fukachan <fukachan> | 2001-10-17 10:24:25 +0000 |
|---|---|---|
| committer | fukachan <fukachan> | 2001-10-17 10:24:25 +0000 |
| commit | 74f14516a94a5f83a8050891002dc32e627d71ee (patch) | |
| tree | 079daa948e9199ee978e6d2d736aa6c51164293c /fml/lib | |
| parent | 4c0c83db46a7be0134466db1ee4879be1be92fb4 (diff) | |
| download | fml8-74f14516a94a5f83a8050891002dc32e627d71ee.tar.gz fml8-74f14516a94a5f83a8050891002dc32e627d71ee.tar.bz2 fml8-74f14516a94a5f83a8050891002dc32e627d71ee.zip | |
FML/Command/ACL.pm -> FML/Command/Attribute.pm
modified FML::Command uses get_attribute() in FML::Command::Attribute
Diffstat (limited to 'fml/lib')
| -rw-r--r-- | fml/lib/FML/Command.pm | 24 | ||||
| -rw-r--r-- | fml/lib/FML/Command/ACL.pm | 59 | ||||
| -rw-r--r-- | fml/lib/FML/Command/Attribute.pm | 89 |
3 files changed, 106 insertions, 66 deletions
diff --git a/fml/lib/FML/Command.pm b/fml/lib/FML/Command.pm index dd759b0e..95c2c063 100644 --- a/fml/lib/FML/Command.pm +++ b/fml/lib/FML/Command.pm @@ -4,7 +4,7 @@ # All rights reserved. This program is free software; you can # redistribute it and/or modify it under the same terms as Perl itself. # -# $FML: Command.pm,v 1.10 2001/10/13 02:33:12 fukachan Exp $ +# $FML: Command.pm,v 1.11 2001/10/14 00:56:54 fukachan Exp $ # package FML::Command; @@ -13,6 +13,9 @@ use vars qw(@ISA @EXPORT @EXPORT_OK $AUTOLOAD); use Carp; use FML::Log qw(Log LogWarn LogError); +use FML::Command::Attribute; +@ISA = qw(FML::Command::Attribute); + =head1 NAME FML::Command - dispacher of fml commands @@ -64,7 +67,7 @@ sub AUTOLOAD $comname =~ s/.*:://; my $pkg = "FML::Command::${mode}::${comname}"; - Log("AUTOLOAD->load $pkg") if $0 =~ /loader/; # debug + Log("load $pkg") if $0 =~ /loader/; # debug eval qq{ require $pkg; $pkg->import();}; unless ($@) { @@ -75,9 +78,9 @@ sub AUTOLOAD } if ($command->can('process')) { - $curproc->lock() if $self->require_lock($comname); + $curproc->lock() if $self->require_lock($mode, $comname); $command->process($curproc, $command_args); - $curproc->unlock() if $self->require_lock($comname); + $curproc->unlock() if $self->require_lock($mode, $comname); if ($command->error()) { Log($command->error());} } @@ -92,7 +95,7 @@ sub AUTOLOAD } -=head2 C<require_lock(command)> +=head2 C<require_lock($comname)> specifield C<command> requires lock (giant lock) ? return 1 by default (almost all command requires lock). @@ -101,8 +104,15 @@ return 1 by default (almost all command requires lock). sub require_lock { - my ($self, $command) = @_; - $command eq 'newml' ? 0 : 1; + my ($self, $mode, $comname) = @_; + + my $r = $self->get_attribute($mode, $comname, 'require_lock'); + + if ($0 =~ /loader/) { + Log("get_attribute($mode, $comname, 'require_lock') = $r"); + } + + return $r; } diff --git a/fml/lib/FML/Command/ACL.pm b/fml/lib/FML/Command/ACL.pm deleted file mode 100644 index d55ccab7..00000000 --- a/fml/lib/FML/Command/ACL.pm +++ /dev/null @@ -1,59 +0,0 @@ -#-*- perl -*- -# -# Copyright (C) 2001 Ken'ichi Fukamachi -# All rights reserved. This program is free software; you can -# redistribute it and/or modify it under the same terms as Perl itself. -# -# $FML: @template.pm,v 1.1 2001/08/07 12:23:48 fukachan Exp $ -# - -package FML::Command::ACL; -use strict; -use vars qw(%FML_USER_COMMAND); - -%FML_USER_COMMAND = - ( - '__default__' => { - 'require_lock' => 1, - }, - - 'newml' => { - 'require_lock' => 0, - }, - - - - ); - - - - - -=head1 NAME - -FML::ACL - accecc control lists - -=head1 SYNOPSIS - -=head1 DESCRIPTION - -=head1 AUTHOR - -Ken'ichi Fukamachi - -=head1 COPYRIGHT - -Copyright (C) 2001 Ken'ichi Fukamachi - -All rights reserved. This program is free software; you can -redistribute it and/or modify it under the same terms as Perl itself. - -=head1 HISTORY - -FML::ACL appeared in fml5 mailing list driver package. -See C<http://www.fml.org/> for more details. - -=cut - - -1; diff --git a/fml/lib/FML/Command/Attribute.pm b/fml/lib/FML/Command/Attribute.pm new file mode 100644 index 00000000..3bec8f52 --- /dev/null +++ b/fml/lib/FML/Command/Attribute.pm @@ -0,0 +1,89 @@ +#-*- perl -*- +# +# Copyright (C) 2001 Ken'ichi Fukamachi +# All rights reserved. This program is free software; you can +# redistribute it and/or modify it under the same terms as Perl itself. +# +# $FML: Command::Attribute.pm,v 1.1 2001/08/26 05:45:50 fukachan Exp $ +# + +package FML::Command::Attribute; +use strict; +use vars qw($FML_USER_COMMAND $FML_ADMIN_COMMAND); + +$FML_USER_COMMAND = { + '__default__' => { + 'require_lock' => 1, + }, + + 'newml' => { + 'require_lock' => 0, + }, +}; + + +sub get_attribute +{ + my ($self, $mode, $comname, $attribute) = @_; + + # aligned to lowercase + $mode =~ tr/A-Z/a-z/; + $comname =~ tr/A-Z/a-z/; + $attribute =~ tr/A-Z/a-z/; + + if ($mode eq 'user') { + if (defined $FML_USER_COMMAND->{ $comname }->{ $attribute }) { + return $FML_USER_COMMAND->{ $comname }->{ $attribute }; + } + elsif (defined $FML_USER_COMMAND->{ '__default__' }->{ $attribute }) { + return $FML_USER_COMMAND->{ '__default__' }->{ $attribute }; + } + else { + return undef; + } + } + elsif ($mode eq 'admin') { + if (defined $FML_ADMIN_COMMAND->{ $comname }->{ $attribute }) { + return $FML_ADMIN_COMMAND->{ $comname }->{ $attribute }; + } + elsif (defined $FML_ADMIN_COMMAND->{ '__default__' }->{ $attribute }) { + return $FML_ADMIN_COMMAND->{ '__default__' }->{ $attribute }; + } + else { + return undef; + } + } + else { + return undef; + } +} + + +=head1 NAME + +FML::Command::Attribute - attribute for each command + +=head1 SYNOPSIS + +=head1 DESCRIPTION + +=head1 AUTHOR + +Ken'ichi Fukamachi + +=head1 COPYRIGHT + +Copyright (C) 2001 Ken'ichi Fukamachi + +All rights reserved. This program is free software; you can +redistribute it and/or modify it under the same terms as Perl itself. + +=head1 HISTORY + +FML::Command::Attribute appeared in fml5 mailing list driver package. +See C<http://www.fml.org/> for more details. + +=cut + + +1; |
