[interchange-cvs] interchange - jon modified lib/Vend/Parse.pm
interchange-core@interchange.redhat.com
interchange-core@interchange.redhat.com
Mon Mar 4 18:46:00 2002
User: jon
Date: 2002-03-04 23:45:17 GMT
Modified: lib/Vend Parse.pm
Log:
* Disable reparse for restrict tag to prevent infinite loops.
(The NoReparse setting got lost in the Great Tag Breakout.)
* Add new log option to restrict tag. Possible values are 'all', 'once',
and 'none'. Default remains 'all'.
* Remove space after occurrences of 'variable=' in logfile output to
simplify parsing of $Vend::restricted string.
Revision Changes Path
2.15 +23 -14 interchange/lib/Vend/Parse.pm
rev 2.15, prev_rev 2.14
Index: Parse.pm
===================================================================
RCS file: /var/cvs/interchange/lib/Vend/Parse.pm,v
retrieving revision 2.14
retrieving revision 2.15
diff -u -u -r2.14 -r2.15
--- Parse.pm 18 Feb 2002 02:07:03 -0000 2.14
+++ Parse.pm 4 Mar 2002 23:45:17 -0000 2.15
@@ -1,6 +1,6 @@
# Vend::Parse - Parse Interchange tags
#
-# $Id: Parse.pm,v 2.14 2002/02/18 02:07:03 mheins Exp $
+# $Id: Parse.pm,v 2.15 2002/03/04 23:45:17 jon Exp $
#
# Copyright (C) 1996-2001 Red Hat, Inc. <interchange@redhat.com>
#
@@ -35,7 +35,7 @@
@ISA = qw(Exporter Vend::Parser);
-$VERSION = substr(q$Revision: 2.14 $, 10);
+$VERSION = substr(q$Revision: 2.15 $, 10);
@EXPORT = ();
@EXPORT_OK = qw(find_matching_end);
@@ -78,8 +78,8 @@
my %hasEndTag = (
qw(
- if 1
- unless 1
+ if 1
+ unless 1
restrict 1
)
);
@@ -175,6 +175,8 @@
my $save_restrict = $Vend::restricted;
+ $opt->{log} ||= 'all';
+
my $default;
if("\L$opt->{policy}" eq 'allow') {
# Accept all, deny only ones defined in disable
@@ -194,7 +196,6 @@
tr/-/_/;
}
-
my %restrict;
for(keys %Routine) {
$restrict{$_} = $default;
@@ -206,9 +207,10 @@
$Vend::Cfg->{AdminSub} = \%restrict;
$Vend::restricted = join " ",
- 'default=', $opt->{policy},
- 'enable=', join(",", @enable),
- 'disable=', join(",", @disable),
+ 'default=' . $opt->{policy},
+ 'enable=' . join(",", @enable),
+ 'disable=' . join(",", @disable),
+ 'log=' . $opt->{log},
;
my $out;
eval {
@@ -267,6 +269,7 @@
);
my %NoReparse = ( qw/
+ restrict 1
/ );
my %Gobble = ( qw/
@@ -327,7 +330,7 @@
my $tag = shift;
#::logDebug("Parse-do_tag: tag=$tag caller=" . caller() . " args=" . ::uneval_it(\@_) );
if (defined $Vend::Cfg->{AdminSub}{$tag}) {
-
+
if($Vend::restricted) {
die errmsg(
"Tag '%s' in execution-restricted area: %s",
@@ -516,13 +519,19 @@
my($tmpbuf);
if (defined $Vend::Cfg->{AdminSub}{$tag}) {
-
+
if($Vend::restricted) {
- ::logError(
- "Restricted tag (%s) attempted during restriction '%s'",
- $origtext,
- $Vend::restricted,
+ my $log = 'all';
+ $Vend::restricted =~ /\blog=(\w+)/ and $log = lc $1;
+ undef $log if $log eq 'none' or
+ ($log eq 'once' and $Vend::restricted_err{$origtext}++);
+ if ($log) {
+ ::logError(
+ "Restricted tag (%s) attempted during restriction '%s'",
+ $origtext,
+ $Vend::restricted,
);
+ }
$self->{OUT} .= $origtext;
return 1;
}