summaryrefslogtreecommitdiff
path: root/source4/scripting
diff options
context:
space:
mode:
Diffstat (limited to 'source4/scripting')
-rw-r--r--source4/scripting/ejs/ejsrpc.c27
-rw-r--r--source4/scripting/ejs/ejsrpc.h17
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)))