diff options
author | Andrew Tridgell <tridge@samba.org> | 2005-07-11 10:18:26 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:20:06 -0500 |
commit | 887461327a93e1677de44438a5e4a1abd5b91f11 (patch) | |
tree | 8cd1f4b3c45e788341c4e7d5b2192bc2fdd88a6a /source4/scripting/ejs/mprutil.c | |
parent | 07c2a1c09a97a069f3e569c4ec8f2628e6f13a93 (diff) | |
download | samba-887461327a93e1677de44438a5e4a1abd5b91f11.tar.gz samba-887461327a93e1677de44438a5e4a1abd5b91f11.tar.bz2 samba-887461327a93e1677de44438a5e4a1abd5b91f11.zip |
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)
Diffstat (limited to 'source4/scripting/ejs/mprutil.c')
-rw-r--r-- | source4/scripting/ejs/mprutil.c | 23 |
1 files changed, 15 insertions, 8 deletions
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 @@ -25,6 +25,14 @@ #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 */ NTSTATUS mprGetVar(struct MprVar **v, const char *name) @@ -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;i<msg->num_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;j<el->num_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;i<count;i++) { mprAddArray(&res, i, mprLdbMessage(msg[i])); } @@ -249,7 +256,7 @@ struct MprVar mprNTSTATUS(NTSTATUS status) { struct MprVar res; - res = mprCreateObjVar("ntstatus", MPR_DEFAULT_HASH_SIZE); + res = mprObject("ntstatus"); mprSetVar(&res, "errstr", mprCreateStringVar(nt_errstr(status), 1)); mprSetVar(&res, "v", mprCreateIntegerVar(NT_STATUS_V(status))); @@ -266,7 +273,7 @@ struct MprVar mprWERROR(WERROR status) { struct MprVar res; - res = mprCreateObjVar("werror", MPR_DEFAULT_HASH_SIZE); + res = mprObject("werror"); mprSetVar(&res, "errstr", mprCreateStringVar(win_errstr(status), 1)); mprSetVar(&res, "v", mprCreateIntegerVar(W_ERROR_V(status))); |