diff options
Diffstat (limited to 'source4/build/pidl/client.pm')
-rw-r--r-- | source4/build/pidl/client.pm | 79 |
1 files changed, 9 insertions, 70 deletions
diff --git a/source4/build/pidl/client.pm b/source4/build/pidl/client.pm index 549a5d0dd3..015ac05223 100644 --- a/source4/build/pidl/client.pm +++ b/source4/build/pidl/client.pm @@ -11,82 +11,33 @@ my($res); ##################################################################### # parse a function -sub ParseFunction($) +sub ParseFunction($$) { + my $interface = shift; my $fn = shift; my $name = $fn->{NAME}; my $uname = uc $name; - return if (util::has_property($fn, "local")); - - my $objarg; - if (util::has_property($fn, "object")) { - $objarg = "&d->objref->u_objref.u_standard.std.ipid"; - # FIXME: Support custom marshalling - - $res .= " -struct rpc_request *dcerpc_$name\_send(struct dcom_interface *d, TALLOC_CTX *mem_ctx, struct $name *r) -{ - struct dcerpc_pipe *p; - NTSTATUS status = dcom_get_pipe(d, &p); - - if (NT_STATUS_IS_ERR(status)) { - return NULL; - } - - ZERO_STRUCT(r->in.ORPCthis); - r->in.ORPCthis.version.MajorVersion = COM_MAJOR_VERSION; - r->in.ORPCthis.version.MinorVersion = COM_MINOR_VERSION; - -"; - } else { - $objarg = "NULL"; - $res .= " + $res .= " struct rpc_request *dcerpc_$name\_send(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct $name *r) -{"; - } +{ - $res.=" if (p->flags & DCERPC_DEBUG_PRINT_IN) { NDR_PRINT_IN_DEBUG($name, r); } - return dcerpc_ndr_request_send(p, $objarg, DCERPC_$uname, mem_ctx, + return dcerpc_ndr_request_send(p, NULL, DCERPC_$uname, mem_ctx, (ndr_push_flags_fn_t) ndr_push_$name, (ndr_pull_flags_fn_t) ndr_pull_$name, r, sizeof(*r)); } -"; - - if (util::has_property($fn, "object")) { - $res .= -" -NTSTATUS dcerpc_$name(struct dcom_interface *d, TALLOC_CTX *mem_ctx, struct $name *r) -{ - struct dcerpc_pipe *p; - NTSTATUS status = dcom_get_pipe(d, &p); - struct rpc_request *req; - - if (NT_STATUS_IS_ERR(status)) { - return status; - } - - "; - $objarg = "d"; - } else { - $res .= -" NTSTATUS dcerpc_$name(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct $name *r) { struct rpc_request *req; NTSTATUS status; - "; - $objarg = "p"; - } - - $res .= " - req = dcerpc_$name\_send($objarg, mem_ctx, r); + + req = dcerpc_$name\_send(p, mem_ctx, r); if (req == NULL) return NT_STATUS_NO_MEMORY; status = dcerpc_ndr_request_recv(req); @@ -112,22 +63,10 @@ sub ParseInterface($) { my($interface) = shift; my($data) = $interface->{DATA}; + $res = "/* Client functions generated by pidl */\n\n"; foreach my $d (@{$data}) { ($d->{TYPE} eq "FUNCTION") && - ParseFunction($d); - } -} - - -##################################################################### -# parse a parsed IDL structure back into an IDL file -sub Parse($) -{ - my($idl) = shift; - $res = "/* dcerpc client calls generated by pidl */\n\n"; - foreach my $x (@{$idl}) { - ($x->{TYPE} eq "INTERFACE") && - ParseInterface($x); + ParseFunction($interface, $d); } return $res; } |