50 lines
1.5 KiB
Diff
50 lines
1.5 KiB
Diff
|
--- ./utils/h2ph.PL.orig
|
||
|
+++ ./utils/h2ph.PL
|
||
|
@@ -401,7 +401,10 @@ if ($opt_e && (scalar(keys %bad_file) > 0)) {
|
||
|
exit $Exit;
|
||
|
|
||
|
sub expr {
|
||
|
- $new = '"(assembly code)"' and return if /\b__asm__\b/; # freak out.
|
||
|
+ if (/\b__asm__\b/) { # freak out
|
||
|
+ $new = '"(assembly code)"';
|
||
|
+ return
|
||
|
+ }
|
||
|
my $joined_args;
|
||
|
if(keys(%curargs)) {
|
||
|
$joined_args = join('|', keys(%curargs));
|
||
|
@@ -798,7 +801,16 @@ sub build_preamble_if_necessary
|
||
|
# parenthesized value: d=(v)
|
||
|
$define{$_} = $1;
|
||
|
}
|
||
|
- if ($define{$_} =~ /^([+-]?(\d+)?\.\d+([eE][+-]?\d+)?)[FL]?$/) {
|
||
|
+ if (/^(\w+)\((\w)\)$/) {
|
||
|
+ my($macro, $arg) = ($1, $2);
|
||
|
+ my $def = $define{$_};
|
||
|
+ $def =~ s/$arg/\$\{$arg\}/g;
|
||
|
+ print PREAMBLE <<DEFINE;
|
||
|
+unless (defined &$macro) { sub $macro(\$) { my (\$$arg) = \@_; \"$def\" } }
|
||
|
+
|
||
|
+DEFINE
|
||
|
+ } elsif
|
||
|
+ ($define{$_} =~ /^([+-]?(\d+)?\.\d+([eE][+-]?\d+)?)[FL]?$/) {
|
||
|
# float:
|
||
|
print PREAMBLE
|
||
|
"unless (defined &$_) { sub $_() { $1 } }\n\n";
|
||
|
@@ -807,8 +819,14 @@ sub build_preamble_if_necessary
|
||
|
print PREAMBLE
|
||
|
"unless (defined &$_) { sub $_() { $1 } }\n\n";
|
||
|
} elsif ($define{$_} =~ /^\w+$/) {
|
||
|
- print PREAMBLE
|
||
|
- "unless (defined &$_) { sub $_() { &$define{$_} } }\n\n";
|
||
|
+ my $def = $define{$_};
|
||
|
+ if ($isatype{$def}) {
|
||
|
+ print PREAMBLE
|
||
|
+ "unless (defined &$_) { sub $_() { \"$def\" } }\n\n";
|
||
|
+ } else {
|
||
|
+ print PREAMBLE
|
||
|
+ "unless (defined &$_) { sub $_() { &$def } }\n\n";
|
||
|
+ }
|
||
|
} else {
|
||
|
print PREAMBLE
|
||
|
"unless (defined &$_) { sub $_() { \"",
|