svn commit: samba r1845 - in branches/SAMBA_4_0/source:
build/pidl librpc/rpc
tridge at samba.org
tridge at samba.org
Wed Aug 18 15:03:20 GMT 2004
Metze,
> I would propose the following patch, and the calling function should always look at
> r.out.result .
That would certainly give the most consistent interface.
Maybe we could provide macros similar to NT_STATUS_IS_OK() and
NT_STATUS_EQUAL() like this:
#define RPC_STATUS_IS_OK(r, status) \
(NT_STATUS_IS_OK(status) && NT_STATUS_IS_OK((r)->result))
#define RPC_STATUS_EQUAL(r, status, status2) \
(NT_STATUS_IS_OK(status) && NT_STATUS_EQUAL((r)->result, status2))
#define RPC_STATUS(r, status) \
(NT_STATUS_IS_OK(status)?(r)->result:status)
so we would have client code like this:
status = dcerpc_samr_Close(p, mem_ctx, &r);
if (!RPC_STATUS_IS_OK(&r, status)) {
printf("Close handle failed - %s\n", rpc_errstr(p, r->result));
}
where rpc_errstr() would be something like this:
const char *rpc_errstr(struct dcerpc_pipe *p, NTSTATUS status)
{
if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
return dcerpc_fault_errstr(p->last_fault_code);
}
return nt_errstr(status);
}
More information about the samba-technical
mailing list