From 887461327a93e1677de44438a5e4a1abd5b91f11 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Mon, 11 Jul 2005 10:18:26 +0000 Subject: r8320: make sure all our returned objects are full objects, which means they have the toString() and valueOf() default attributes this allows all our returned objects to be used in logical expressions (This used to be commit 570f071b1544b497d5f480b8ad50df097fe4c843) --- source4/scripting/ejs/ejsrpc.c | 2 +- source4/scripting/ejs/mprutil.c | 23 +++++++++++++++-------- source4/scripting/ejs/smbcalls.c | 2 +- source4/scripting/ejs/smbcalls_auth.c | 4 ++-- source4/scripting/ejs/smbcalls_cli.c | 2 +- source4/scripting/ejs/smbcalls_nss.c | 4 ++-- source4/scripting/ejs/smbcalls_rpc.c | 2 +- 7 files changed, 23 insertions(+), 16 deletions(-) (limited to 'source4/scripting') diff --git a/source4/scripting/ejs/ejsrpc.c b/source4/scripting/ejs/ejsrpc.c index 8b6bc328dd..57e0a8f690 100644 --- a/source4/scripting/ejs/ejsrpc.c +++ b/source4/scripting/ejs/ejsrpc.c @@ -58,7 +58,7 @@ NTSTATUS ejs_pull_struct_start(struct ejs_rpc *ejs, struct MprVar **v, const cha */ NTSTATUS ejs_push_struct_start(struct ejs_rpc *ejs, struct MprVar **v, const char *name) { - NDR_CHECK(mprSetVar(*v, name, mprCreateObjVar(name, MPR_DEFAULT_HASH_SIZE))); + NDR_CHECK(mprSetVar(*v, name, mprObject(name))); return mprGetVar(v, name); } diff --git a/source4/scripting/ejs/mprutil.c b/source4/scripting/ejs/mprutil.c index a9cf71b15d..40ca050a96 100644 --- a/source4/scripting/ejs/mprutil.c +++ b/source4/scripting/ejs/mprutil.c @@ -24,6 +24,14 @@ #include "lib/ejs/ejs.h" #include "lib/ldb/include/ldb.h" +/* + return a default mpr object +*/ +struct MprVar mprObject(const char *name) +{ + return ejsCreateObj(name?name:"(NULL)", MPR_DEFAULT_HASH_SIZE); +} + /* find a mpr component, allowing for sub objects, using the '.' convention */ @@ -75,7 +83,7 @@ } v2 = mprGetProperty(v, objname, NULL); if (v2 == NULL) { - mprSetVar(v, objname, mprCreateObjVar(objname, MPR_DEFAULT_HASH_SIZE)); + mprSetVar(v, objname, mprObject(objname)); v2 = mprGetProperty(v, objname, NULL); } status = mprSetVar(v2, p+1, val); @@ -104,7 +112,7 @@ struct MprVar mprList(const char *name, const char **list) struct MprVar var; int i; - var = mprCreateObjVar(name, MPR_DEFAULT_HASH_SIZE); + var = mprObject(name); for (i=0;list && list[i];i++) { mprAddArray(&var, i, mprCreateStringVar(list[i], 1)); } @@ -119,7 +127,6 @@ struct MprVar mprList(const char *name, const char **list) */ struct MprVar mprString(const char *s) { - struct MprVar var; if (s == NULL) { return mprCreatePtrVar(NULL, "NULL"); } @@ -154,7 +161,7 @@ struct MprVar mprLdbMessage(struct ldb_message *msg) const char *multivalued[] = { "objectClass", "memberOf", "privilege", "member", NULL }; - var = mprCreateObjVar(msg->dn, MPR_DEFAULT_HASH_SIZE); + var = mprObject(msg->dn); for (i=0;inum_elements;i++) { struct ldb_message_element *el = &msg->elements[i]; @@ -164,7 +171,7 @@ struct MprVar mprLdbMessage(struct ldb_message *msg) val = mprData(el->values[0].data, el->values[0].length); } else { int j; - val = mprCreateObjVar(el->name, MPR_DEFAULT_HASH_SIZE); + val = mprObject(el->name); for (j=0;jnum_values;j++) { mprAddArray(&val, j, mprData(el->values[j].data, @@ -191,7 +198,7 @@ struct MprVar mprLdbArray(struct ldb_message **msg, int count, const char *name) struct MprVar res; int i; - res = mprCreateObjVar(name?name:"(NULL)", MPR_DEFAULT_HASH_SIZE); + res = mprObject(name); for (i=0;ipw_name)); mprSetVar(&ret, "pw_passwd", mprString(pwd->pw_passwd)); @@ -56,7 +56,7 @@ static struct MprVar mpr_group(struct group *grp) if (grp == NULL) { return mprCreateUndefinedVar(); } - ret = mprCreateObjVar("group", MPR_DEFAULT_HASH_SIZE); + ret = mprObject("group"); mprSetVar(&ret, "gr_name", mprString(grp->gr_name)); mprSetVar(&ret, "gr_passwd", mprString(grp->gr_passwd)); diff --git a/source4/scripting/ejs/smbcalls_rpc.c b/source4/scripting/ejs/smbcalls_rpc.c index bb05eda426..53f7bc2e55 100644 --- a/source4/scripting/ejs/smbcalls_rpc.c +++ b/source4/scripting/ejs/smbcalls_rpc.c @@ -227,7 +227,7 @@ static int ejs_irpc_call(int eid, struct MprVar *conn, struct MprVar *io, talloc_steal(reqs, reqs[i]); } - mprSetVar(io, "results", mprCreateObjVar("results", MPR_DEFAULT_HASH_SIZE)); + mprSetVar(io, "results", mprObject("results")); results = mprGetProperty(io, "results", NULL); /* and receive the results, placing them in io.results[i] */ -- cgit