summaryrefslogtreecommitdiff
path: root/source4/scripting/ejs/mprutil.c
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2005-07-12 02:34:49 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:20:07 -0500
commitb1e93b296ea8f62ce0f15ccef5f6ae5339f4929f (patch)
tree2ba5c18f14d374a29a79061ee17b7dff28186355 /source4/scripting/ejs/mprutil.c
parent36bb0ffd4c59b17c7f942d874e18865707d3c696 (diff)
downloadsamba-b1e93b296ea8f62ce0f15ccef5f6ae5339f4929f.tar.gz
samba-b1e93b296ea8f62ce0f15ccef5f6ae5339f4929f.tar.bz2
samba-b1e93b296ea8f62ce0f15ccef5f6ae5339f4929f.zip
r8337: - use 64 bit access functions in ejs calls
- added access to smbd random functions - fixed ordering in join() - added sys_interfaces(), sys_hostname(), sys_nttime() and sys_ldaptime() (This used to be commit 28c1a1f3c0cd2f8228fd8c3c695ab6f45226fa3f)
Diffstat (limited to 'source4/scripting/ejs/mprutil.c')
-rw-r--r--source4/scripting/ejs/mprutil.c38
1 files changed, 35 insertions, 3 deletions
diff --git a/source4/scripting/ejs/mprutil.c b/source4/scripting/ejs/mprutil.c
index 4f799b2066..95571da245 100644
--- a/source4/scripting/ejs/mprutil.c
+++ b/source4/scripting/ejs/mprutil.c
@@ -211,7 +211,7 @@ struct MprVar mprLdbArray(struct ldb_message **msg, int count, const char *name)
*/
const char *mprToString(const struct MprVar *v)
{
- if (v->type != MPR_TYPE_STRING) return NULL;
+ if (!mprVarIsString(v->type)) return NULL;
return v->string;
}
@@ -220,8 +220,8 @@ const char *mprToString(const struct MprVar *v)
*/
int mprToInt(const struct MprVar *v)
{
- if (v->type != MPR_TYPE_INT) return 0;
- return v->integer;
+ if (!mprVarIsNumber(v->type)) return 0;
+ return mprVarToNumber(v);
}
/*
@@ -249,6 +249,38 @@ const char **mprToList(TALLOC_CTX *mem_ctx, struct MprVar *v)
return list;
}
+
+/*
+ turn a MprVar object variable into a string list
+ this assumes the object variable is an array of strings
+*/
+const char **mprToArray(TALLOC_CTX *mem_ctx, struct MprVar *v)
+{
+ const char **list = NULL;
+ struct MprVar *len;
+ int length, i;
+
+ len = mprGetProperty(v, "length", NULL);
+ if (len == NULL) {
+ return NULL;
+ }
+ length = mprToInt(len);
+
+ for (i=0;i<length;i++) {
+ char idx[16];
+ struct MprVar *vs;
+ mprItoa(i, idx, sizeof(idx));
+ vs = mprGetProperty(v, idx, NULL);
+ if (vs == NULL || vs->type != MPR_TYPE_STRING) {
+ talloc_free(list);
+ return NULL;
+ }
+ list = str_list_add(list, mprToString(vs));
+ }
+ talloc_steal(mem_ctx, list);
+ return list;
+}
+
/*
turn a NTSTATUS into a MprVar object with lots of funky properties
*/