summaryrefslogtreecommitdiff
path: root/fml/lib
diff options
context:
space:
mode:
authorfukachan <fukachan>2001-10-17 10:24:25 +0000
committerfukachan <fukachan>2001-10-17 10:24:25 +0000
commit74f14516a94a5f83a8050891002dc32e627d71ee (patch)
tree079daa948e9199ee978e6d2d736aa6c51164293c /fml/lib
parent4c0c83db46a7be0134466db1ee4879be1be92fb4 (diff)
downloadfml8-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.pm24
-rw-r--r--fml/lib/FML/Command/ACL.pm59
-rw-r--r--fml/lib/FML/Command/Attribute.pm89
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;