diff options
Diffstat (limited to 'source4/scripting/ejs')
-rw-r--r-- | source4/scripting/ejs/ejsrpc.c | 27 | ||||
-rw-r--r-- | source4/scripting/ejs/ejsrpc.h | 17 |
2 files changed, 14 insertions, 30 deletions
diff --git a/source4/scripting/ejs/ejsrpc.c b/source4/scripting/ejs/ejsrpc.c index 965fd8d447..574c75b7de 100644 --- a/source4/scripting/ejs/ejsrpc.c +++ b/source4/scripting/ejs/ejsrpc.c @@ -254,33 +254,6 @@ NTSTATUS ejs_push_enum(struct ejs_rpc *ejs, /* - pull an array of elements -*/ -NTSTATUS ejs_pull_array(struct ejs_rpc *ejs, - struct MprVar *v, const char *name, uint32_t length, - size_t elsize, void **r, ejs_pull_t ejs_pull) -{ - int i; - char *data; - - NDR_CHECK(ejs_pull_struct_start(ejs, &v, name)); - - (*r) = talloc_array_size(ejs, elsize, length); - NT_STATUS_HAVE_NO_MEMORY(*r); - - data = *r; - - for (i=0;i<length;i++) { - char *id = talloc_asprintf(ejs, "%u", i); - NT_STATUS_HAVE_NO_MEMORY(id); - NDR_CHECK(ejs_pull(ejs, v, id, (i*elsize)+data)); - talloc_free(id); - } - return NT_STATUS_OK; -} - - -/* pull a string */ NTSTATUS ejs_pull_string(struct ejs_rpc *ejs, diff --git a/source4/scripting/ejs/ejsrpc.h b/source4/scripting/ejs/ejsrpc.h index 67b81b3411..fdf15c027c 100644 --- a/source4/scripting/ejs/ejsrpc.h +++ b/source4/scripting/ejs/ejsrpc.h @@ -64,10 +64,21 @@ NTSTATUS ejs_pull_enum(struct ejs_rpc *ejs, struct MprVar *v, const char *name, unsigned *r); NTSTATUS ejs_push_enum(struct ejs_rpc *ejs, struct MprVar *v, const char *name, const unsigned *r); -NTSTATUS ejs_pull_array(struct ejs_rpc *ejs, - struct MprVar *v, const char *name, uint32_t length, - size_t elsize, void **r, ejs_pull_t ejs_pull); NTSTATUS ejs_pull_string(struct ejs_rpc *ejs, struct MprVar *v, const char *name, char **s); NTSTATUS ejs_push_string(struct ejs_rpc *ejs, struct MprVar *v, const char *name, const char *s); + +#define EJS_ALLOC_SIZE(ejs, s, size) do { \ + (s) = talloc_size(ejs, size); \ + if (!(s)) return ejs_panic(ejs, "out of memory"); \ +} while (0) + +#define EJS_ALLOC(ejs, s) EJS_ALLOC_SIZE(ejs, s, sizeof(*(s))) + +#define EJS_ALLOC_N_SIZE(ejs, s, n, elsize) do { \ + (s) = talloc_array_size(ejs, elsize, n); \ + if (!(s)) return ejs_panic(ejs, "out of memory"); \ +} while (0) + +#define EJS_ALLOC_N(ejs, s, n) EJS_ALLOC_N_SIZE(ejs, s, n, sizeof(*(s))) |