Cope with struct renames in DCE/RPC and NDR libraries.
authorJelmer Vernooij <jelmer@samba.org>
Fri, 12 Sep 2008 11:58:40 +0000 (13:58 +0200)
committerJelmer Vernooij <jelmer@samba.org>
Mon, 15 Sep 2008 15:39:42 +0000 (17:39 +0200)
source4/pidl/lib/Parse/Pidl/Samba4/COM/Header.pm
source4/pidl/lib/Parse/Pidl/Samba4/COM/Proxy.pm

index f8ba4fc18a92c022bf4f5c417d126b701d34db4a..bc592e7f803eaa182d061e8ffcbe08f2cb84d05e 100644 (file)
@@ -78,6 +78,9 @@ sub ParseInterface($)
        my $if = shift;
        my $res;
 
+       $res .= "\n#ifndef _$if->{NAME}_\n";
+       $res .= "#define _$if->{NAME}_\n";
+
        $res .="\n\n/* $if->{NAME} */\n";
 
        $res .="#define COM_" . uc($if->{NAME}) . "_UUID $if->{PROPERTIES}->{uuid}\n\n";
@@ -102,12 +105,14 @@ sub ParseInterface($)
                $res .="\n";
        }
 
+       $res .= "#endif\n";
+
        return $res;
 }
 
 sub ParseCoClass($)
 {
-       my $c = shift;
+       my ($c) = @_;
        my $res = "";
        $res .= "#define CLSID_" . uc($c->{NAME}) . " $c->{PROPERTIES}->{uuid}\n";
        if (has_property($c, "progid")) {
index e6366f0f3d19014a374e5d8fd0c6302a49f33376..f3525260a565d0f27470677246a552179ca61dde 100644 (file)
@@ -54,7 +54,7 @@ sub ParseRegFunc($)
                $res.= "
        const void *base_vtable;
 
-       base_iid = dcerpc_table_$interface->{BASE}.uuid;
+       base_iid = ndr_table_$interface->{BASE}.syntax_id.uuid;
 
        base_vtable = dcom_proxy_vtable_by_iid(&base_iid);
        if (base_vtable == NULL) {
@@ -69,13 +69,13 @@ sub ParseRegFunc($)
        foreach my $x (@{$interface->{DATA}}) {
                next unless ($x->{TYPE} eq "FUNCTION");
 
-               $res .= "\tproxy_vtable.$x->{NAME} = dcom_proxy_$interface->{NAME}_$x->{NAME};\n";
+               $res .= "\tproxy_vtable->$x->{NAME} = dcom_proxy_$interface->{NAME}_$x->{NAME};\n";
        }
 
        $res.= "
-       proxy_vtable.iid = dcerpc_table_$interface->{NAME}.uuid;
+       proxy_vtable->iid = ndr_table_$interface->{NAME}.syntax_id.uuid;
 
-       return dcom_register_proxy(&proxy_vtable);
+       return dcom_register_proxy((struct IUnknown_vtable *)proxy_vtable);
 }\n\n";
 }
 
@@ -120,7 +120,7 @@ static $fn->{RETURN_TYPE} dcom_proxy_$interface->{NAME}_$name(struct $interface-
                NDR_PRINT_IN_DEBUG($name, &r);          
        }
 
-       status = dcerpc_ndr_request(p, &d->ipid, &dcerpc_table_$interface->{NAME}, DCERPC_$uname, mem_ctx, &r);
+       status = dcerpc_ndr_request(p, &d->ipid, &ndr_table_$interface->{NAME}, DCERPC_$uname, mem_ctx, &r);
 
        if (NT_STATUS_IS_OK(status) && (p->conn->flags & DCERPC_DEBUG_PRINT_OUT)) {
                NDR_PRINT_OUT_DEBUG($name, r);          
@@ -203,7 +203,8 @@ sub Parse($$)
 
        $res .= "#include \"includes.h\"\n" .
                        "#include \"lib/com/dcom/dcom.h\"\n" .
-                       "#include \"$comh_filename\"\n";
+                       "#include \"$comh_filename\"\n" .
+                       "#include \"librpc/rpc/dcerpc.h\"\n";
 
        foreach (@{$pidl}) {
                next if ($_->{TYPE} ne "INTERFACE");