mirror of
git://projects.qi-hardware.com/ben-wpan.git
synced 2025-02-17 00:44:42 +02:00
prod/doc/hmac.pl: allow self-referential macros (not general recursion)
This commit is contained in:
parent
838b8e1ace
commit
2386f1f7b5
@ -198,7 +198,8 @@ sub define_macro
|
|||||||
die "NAME parameter is missing" unless defined $name;
|
die "NAME parameter is missing" unless defined $name;
|
||||||
$d =~ s/$BM/<MACRO/gi;
|
$d =~ s/$BM/<MACRO/gi;
|
||||||
$d =~ s|$EM|</MACRO>|gi;
|
$d =~ s|$EM|</MACRO>|gi;
|
||||||
$mac{$name} = $d;
|
# $mac{$name} = $d;
|
||||||
|
$mac{$name} = &expand_macro_list($d, $name);
|
||||||
$args{$name} = { %arg };
|
$args{$name} = { %arg };
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -214,14 +215,14 @@ sub define_macro
|
|||||||
# Expand first macro
|
# Expand first macro
|
||||||
#
|
#
|
||||||
|
|
||||||
sub expand_macro
|
sub expand_macro_list
|
||||||
{
|
{
|
||||||
local ($in) = @_;
|
local ($in, @mac) = @_;
|
||||||
local ($a,$b,$c);
|
local ($a,$b,$c);
|
||||||
local ($mac, $done, $prm, %arg);
|
local ($mac, $done, $prm, %arg);
|
||||||
|
|
||||||
undef $a;
|
undef $a;
|
||||||
for $mac (keys %mac) {
|
for $mac (@mac) {
|
||||||
if ($in =~ /<$mac\b(("[^"]*"|[^>])*)>/is) {
|
if ($in =~ /<$mac\b(("[^"]*"|[^>])*)>/is) {
|
||||||
($a,$b,$c) = ($`,$1,$') if length $` < length $a || !defined $a;
|
($a,$b,$c) = ($`,$1,$') if length $` < length $a || !defined $a;
|
||||||
}
|
}
|
||||||
@ -259,3 +260,11 @@ sub expand_macro
|
|||||||
}
|
}
|
||||||
return $in;
|
return $in;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sub expand_macro
|
||||||
|
{
|
||||||
|
local ($in) = @_;
|
||||||
|
|
||||||
|
return &expand_macro_list($in, keys %mac);
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user