From 1b11ca3e51e3f2b13a15d195ce2ce89bd8b0871c Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Tue, 22 Feb 2005 19:44:14 +0000 Subject: r5506: Simplify the use of subcontexts and make them a bit less a special case. (This used to be commit 48d54a9b57c0b233c7c60392b23876b426bbdec1) --- source4/librpc/ndr/ndr.c | 78 ++---------------------------------------------- 1 file changed, 2 insertions(+), 76 deletions(-) (limited to 'source4/librpc/ndr') diff --git a/source4/librpc/ndr/ndr.c b/source4/librpc/ndr/ndr.c index 5e1ffb93e0..549230bb29 100644 --- a/source4/librpc/ndr/ndr.c +++ b/source4/librpc/ndr/ndr.c @@ -432,7 +432,7 @@ NTSTATUS ndr_push_error(struct ndr_push *ndr, enum ndr_err_code err, const char handle subcontext buffers, which in midl land are user-marshalled, but we use magic in pidl to make them easier to cope with */ -static NTSTATUS ndr_pull_subcontext_header(struct ndr_pull *ndr, +NTSTATUS ndr_pull_subcontext_header(struct ndr_pull *ndr, size_t sub_size, struct ndr_pull *ndr2) { @@ -465,46 +465,10 @@ static NTSTATUS ndr_pull_subcontext_header(struct ndr_pull *ndr, return NT_STATUS_OK; } -/* - handle subcontext buffers, which in midl land are user-marshalled, but - we use magic in pidl to make them easier to cope with -*/ -NTSTATUS ndr_pull_subcontext_flags_fn(struct ndr_pull *ndr, size_t sub_size, - void *base, ndr_pull_flags_fn_t fn) -{ - struct ndr_pull *ndr2; - NDR_ALLOC(ndr, ndr2); - NDR_CHECK(ndr_pull_subcontext_header(ndr, sub_size, ndr2)); - NDR_CHECK(fn(ndr2, NDR_SCALARS|NDR_BUFFERS, base)); - if (sub_size) { - NDR_CHECK(ndr_pull_advance(ndr, ndr2->data_size)); - } else { - NDR_CHECK(ndr_pull_advance(ndr, ndr2->offset)); - } - return NT_STATUS_OK; -} - -NTSTATUS ndr_pull_subcontext_union_fn(struct ndr_pull *ndr, size_t sub_size, - uint32_t level, void *base, ndr_pull_union_fn_t fn) -{ - struct ndr_pull *ndr2; - - NDR_ALLOC(ndr, ndr2); - NDR_CHECK(ndr_pull_subcontext_header(ndr, sub_size, ndr2)); - NDR_CHECK(fn(ndr2, NDR_SCALARS|NDR_BUFFERS, level, base)); - if (sub_size) { - NDR_CHECK(ndr_pull_advance(ndr, ndr2->data_size)); - } else { - NDR_CHECK(ndr_pull_advance(ndr, ndr2->offset)); - } - return NT_STATUS_OK; -} - - /* push a subcontext header */ -static NTSTATUS ndr_push_subcontext_header(struct ndr_push *ndr, +NTSTATUS ndr_push_subcontext_header(struct ndr_push *ndr, size_t sub_size, struct ndr_push *ndr2) { @@ -527,44 +491,6 @@ static NTSTATUS ndr_push_subcontext_header(struct ndr_push *ndr, return NT_STATUS_OK; } -/* - handle subcontext buffers, which in midl land are user-marshalled, but - we use magic in pidl to make them easier to cope with -*/ -NTSTATUS ndr_push_subcontext_flags_fn(struct ndr_push *ndr, size_t sub_size, - void *base, ndr_push_flags_fn_t fn) -{ - struct ndr_push *ndr2; - - ndr2 = ndr_push_init_ctx(ndr); - if (!ndr2) return NT_STATUS_NO_MEMORY; - - ndr2->flags = ndr->flags; - NDR_CHECK(fn(ndr2, NDR_SCALARS|NDR_BUFFERS, base)); - NDR_CHECK(ndr_push_subcontext_header(ndr, sub_size, ndr2)); - NDR_CHECK(ndr_push_bytes(ndr, ndr2->data, ndr2->offset)); - return NT_STATUS_OK; -} - -/* - handle subcontext buffers for function that take a union -*/ -NTSTATUS ndr_push_subcontext_union_fn(struct ndr_push *ndr, size_t sub_size, - uint32_t level, void *base, ndr_push_union_fn_t fn) -{ - struct ndr_push *ndr2; - - ndr2 = ndr_push_init_ctx(ndr); - if (!ndr2) return NT_STATUS_NO_MEMORY; - - ndr2->flags = ndr->flags; - NDR_CHECK(fn(ndr2, NDR_SCALARS|NDR_BUFFERS, level, base)); - NDR_CHECK(ndr_push_subcontext_header(ndr, sub_size, ndr2)); - NDR_CHECK(ndr_push_bytes(ndr, ndr2->data, ndr2->offset)); - return NT_STATUS_OK; -} - - /* mark the start of a structure */ -- cgit