r10006: Insert correct header file.
authorJelmer Vernooij <jelmer@samba.org>
Sat, 3 Sep 2005 17:16:18 +0000 (17:16 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:36:28 +0000 (13:36 -0500)
(This used to be commit dfa45ec1b329ad01daf81beeb31985811ce4f5af)

source4/pidl/lib/Parse/Pidl/Samba/TDR.pm
source4/pidl/pidl

index b9bfd83e41798eb77bc54efb0a75c9f0ec651575..aa41e9419c1767f3403f25b5806ca655f2b96458 100644 (file)
@@ -60,7 +60,7 @@ sub ParserElement($$$)
        if (has_property($e, "charset")) {
                fatal($e,"charset() on non-array element") unless (defined($e->{ARRAY_LEN}) and scalar(@{$e->{ARRAY_LEN}}) > 0);
                
-               my $len = @{$e->{ARRAY_LEN}}[0];
+               my $len = ParseExpr(@{$e->{ARRAY_LEN}}[0], $env);
                if ($len eq "*") { $len = "-1"; }
                pidl "TDR_CHECK(tdr_$t\_charset(tdr$name, &v->$e->{NAME}, $len, sizeof($e->{TYPE}_t), CH_$e->{PROPERTIES}->{charset}));";
                return;
@@ -112,6 +112,7 @@ sub ParserStruct($$$$)
        }
 
        my %env = map { $_->{NAME} => "v->$_->{NAME}" } @{$e->{ELEMENTS}};
+       $env{"this"} = "v";
        ParserElement($_, $t, \%env) foreach (@{$e->{ELEMENTS}});
        
        if ($t eq "print") {
@@ -215,6 +216,7 @@ sub Parser($$)
        pidl "/* autogenerated by pidl */";
        pidl "#include \"includes.h\"";
        pidl "#include \"$hdrname\"";
+       pidl "";
        foreach (@$idl) { ParserInterface($_) if ($_->{TYPE} eq "INTERFACE"); } 
        return $ret;
 }
@@ -226,8 +228,6 @@ sub HeaderInterface($$)
        pidl "#ifndef __TDR_$x->{NAME}_HEADER__";
        pidl "#define __TDR_$x->{NAME}_HEADER__";
 
-       pidl "#include \"$outputdir/$x->{NAME}.h\"";
-       
        foreach my $e (@{$x->{DATA}}) { 
                next unless ($e->{TYPE} eq "TYPEDEF"); 
                next unless has_property($e, "public");
@@ -251,11 +251,14 @@ sub HeaderInterface($$)
        pidl "#endif /* __TDR_$x->{NAME}_HEADER__ */";
 }
 
-sub Header($$)
+sub Header($$$)
 {
-       my ($idl,$outputdir) = @_;
+       my ($idl,$outputdir,$basename) = @_;
        $ret = "";
        pidl "/* Generated by pidl */";
+
+       pidl "#include \"$outputdir/$basename.h\"";
+       pidl "";
        
        foreach (@$idl) { 
                HeaderInterface($_, $outputdir) if ($_->{TYPE} eq "INTERFACE"); 
index c68ea6c1213389acf6d284edab8a9528bd74258b..89c6194257c8a659d4115aecf6a0a68d00d78f65 100755 (executable)
@@ -339,7 +339,7 @@ $dcom
 
        if (defined($opt_tdr_header)) {
                require Parse::Pidl::Samba::TDR;
-               FileSave($tdr_header, Parse::Pidl::Samba::TDR::Header($pidl, $outputdir));
+               FileSave($tdr_header, Parse::Pidl::Samba::TDR::Header($pidl, $outputdir,$basename));
        }
 
        if ($opt_template) {