svn commit: samba r8481 - in branches/SAMBA_4_0: source/scripting/ejs source/scripting/libjs swat/esptest testprogs/ejs

tridge at samba.org tridge at samba.org
Fri Jul 15 05:40:34 GMT 2005


Author: tridge
Date: 2005-07-15 05:40:34 +0000 (Fri, 15 Jul 2005)
New Revision: 8481

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=8481

Log:
switched ldb ejs called over to an OO interface, so you do:

var ldb = ldb_init();

res = ldb.search(dbfile, "(objectClass=user)");

you can also do:

ldbSearch = ldb.search;
res = ldbSearch(dbfile, "(objectClass=user)");

if you want the old interface (ie. you can use this to import
functions into the global or local namespace).

Modified:
   branches/SAMBA_4_0/source/scripting/ejs/mprutil.c
   branches/SAMBA_4_0/source/scripting/ejs/smbcalls.h
   branches/SAMBA_4_0/source/scripting/ejs/smbcalls_ldb.c
   branches/SAMBA_4_0/source/scripting/libjs/provision.js
   branches/SAMBA_4_0/swat/esptest/ldb.esp
   branches/SAMBA_4_0/testprogs/ejs/ldb.js


Changeset:
Modified: branches/SAMBA_4_0/source/scripting/ejs/mprutil.c
===================================================================
--- branches/SAMBA_4_0/source/scripting/ejs/mprutil.c	2005-07-15 00:00:48 UTC (rev 8480)
+++ branches/SAMBA_4_0/source/scripting/ejs/mprutil.c	2005-07-15 05:40:34 UTC (rev 8481)
@@ -367,3 +367,18 @@
 }
 
 
+/*
+  set a C function in a variable
+*/
+ void mprSetCFunction(struct MprVar *obj, const char *name, MprCFunction fn)
+{
+	mprSetVar(obj, name, mprCreateCFunctionVar(fn, NULL, MPR_VAR_SCRIPT_HANDLE));
+}
+
+/*
+  set a string C function in a variable
+*/
+ void mprSetStringCFunction(struct MprVar *obj, const char *name, MprStringCFunction fn)
+{
+	mprSetVar(obj, name, mprCreateStringCFunctionVar(fn, NULL, MPR_VAR_SCRIPT_HANDLE));
+}

Modified: branches/SAMBA_4_0/source/scripting/ejs/smbcalls.h
===================================================================
--- branches/SAMBA_4_0/source/scripting/ejs/smbcalls.h	2005-07-15 00:00:48 UTC (rev 8480)
+++ branches/SAMBA_4_0/source/scripting/ejs/smbcalls.h	2005-07-15 05:40:34 UTC (rev 8481)
@@ -26,3 +26,6 @@
 NTSTATUS mprSetVar(struct MprVar *v, const char *name, struct MprVar val);
 NTSTATUS mprGetVar(struct MprVar **v, const char *name);
 void mprAddArray(struct MprVar *var, int i, struct MprVar v);
+void mprSetCFunction(struct MprVar *obj, const char *name, MprCFunction fn);
+void mprSetStringCFunction(struct MprVar *obj, const char *name, MprStringCFunction fn);
+

Modified: branches/SAMBA_4_0/source/scripting/ejs/smbcalls_ldb.c
===================================================================
--- branches/SAMBA_4_0/source/scripting/ejs/smbcalls_ldb.c	2005-07-15 00:00:48 UTC (rev 8480)
+++ branches/SAMBA_4_0/source/scripting/ejs/smbcalls_ldb.c	2005-07-15 05:40:34 UTC (rev 8481)
@@ -222,16 +222,28 @@
 	return ejs_ldbAddModify(eid, argc, argv, ldb_modify);
 }
 
+/*
+  initialise ldb ejs subsystem
+*/
+static int ejs_ldb_init(MprVarHandle eid, int argc, struct MprVar **argv)
+{
+	struct MprVar ldb = mprObject("ldb");
 
+	mprSetCFunction(&ldb, "search", ejs_ldbSearch);
+	mprSetStringCFunction(&ldb, "add", ejs_ldbAdd);
+	mprSetStringCFunction(&ldb, "modify", ejs_ldbModify);
+	mprSetStringCFunction(&ldb, "delete", ejs_ldbDelete);
+	mprSetStringCFunction(&ldb, "rename", ejs_ldbRename);
 
+	mpr_Return(eid, ldb);
+	return 0;
+}
+
+
 /*
   setup C functions that be called from ejs
 */
 void smb_setup_ejs_ldb(void)
 {
-	ejsDefineCFunction(-1, "ldbSearch", ejs_ldbSearch, NULL, MPR_VAR_SCRIPT_HANDLE);
-	ejsDefineStringCFunction(-1, "ldbAdd", ejs_ldbAdd, NULL, MPR_VAR_SCRIPT_HANDLE);
-	ejsDefineStringCFunction(-1, "ldbModify", ejs_ldbModify, NULL, MPR_VAR_SCRIPT_HANDLE);
-	ejsDefineStringCFunction(-1, "ldbDelete", ejs_ldbDelete, NULL, MPR_VAR_SCRIPT_HANDLE);
-	ejsDefineStringCFunction(-1, "ldbRename", ejs_ldbRename, NULL, MPR_VAR_SCRIPT_HANDLE);
+	ejsDefineCFunction(-1, "ldb_init", ejs_ldb_init, NULL, MPR_VAR_SCRIPT_HANDLE);
 }

Modified: branches/SAMBA_4_0/source/scripting/libjs/provision.js
===================================================================
--- branches/SAMBA_4_0/source/scripting/libjs/provision.js	2005-07-15 00:00:48 UTC (rev 8480)
+++ branches/SAMBA_4_0/source/scripting/libjs/provision.js	2005-07-15 05:40:34 UTC (rev 8481)
@@ -114,6 +114,8 @@
 function setup_ldb(ldif, dbname, subobj)
 {
 	var extra = "";
+	var ldb = ldb_init();
+
 	if (arguments.length == 4) {
 		extra = arguments[3];
 	}
@@ -127,7 +129,7 @@
 	data = data + extra;
 	data = substitute_var(data, subobj);
 
-	ok = ldbAdd(db, data);
+	ok = ldb.add(db, data);
 	assert(ok);
 }
 

Modified: branches/SAMBA_4_0/swat/esptest/ldb.esp
===================================================================
--- branches/SAMBA_4_0/swat/esptest/ldb.esp	2005-07-15 00:00:48 UTC (rev 8480)
+++ branches/SAMBA_4_0/swat/esptest/ldb.esp	2005-07-15 05:40:34 UTC (rev 8481)
@@ -7,8 +7,9 @@
 <%
 var dbfile = lpGet("sam database");
 var attrs = new Array("name", "dnsDomain", "objectSid", "dn");
+var ldb = ldb_init();
 
-res = ldbSearch(dbfile, "(objectClass=domain)", attrs);
+res = ldb.search(dbfile, "(objectClass=domain)", attrs);
 multi_table(res, "dn");
 %>
 
@@ -17,14 +18,14 @@
 <%
 var dbfile = lpGet("sam database");
 
-res = ldbSearch(dbfile, "(objectClass=user)");
+res = ldb.search(dbfile, "(objectClass=user)");
 multi_table(res, "dn");
 %>
 
 <h3>A search with bad arguments</h3>
 
 <%
-res = ldbSearch("foo");
+res = ldb.search("foo");
 %>
 
 all done

Modified: branches/SAMBA_4_0/testprogs/ejs/ldb.js
===================================================================
--- branches/SAMBA_4_0/testprogs/ejs/ldb.js	2005-07-15 00:00:48 UTC (rev 8480)
+++ branches/SAMBA_4_0/testprogs/ejs/ldb.js	2005-07-15 05:40:34 UTC (rev 8481)
@@ -6,19 +6,20 @@
 
 var dbfile = lpGet("sam database");
 var attrs = new Array("name", "dnsDomain", "objectSid", "dn");
+var ldb = ldb_init();
 
-res = ldbSearch(dbfile, "(objectClass=domain)", attrs);
+res = ldb.search(dbfile, "(objectClass=domain)", attrs);
 
 printVars(res);
 
 println("and now an unconstrained search");
 
 var dbfile = lpGet("sam database");
-res = ldbSearch(dbfile, "(objectClass=user)");
+res = ldb.search(dbfile, "(objectClass=user)");
 printVars(res);
 
 println("and a bad search");
 
-res = ldbSearch("foo");
+res = ldb.search("foo");
 
 println("all done");



More information about the samba-cvs mailing list