svn commit: samba r8659 - in branches/SAMBA_4_0/source: lib/ldb/include scripting/ejs

tridge at samba.org tridge at samba.org
Thu Jul 21 01:56:23 GMT 2005


Author: tridge
Date: 2005-07-21 01:56:22 +0000 (Thu, 21 Jul 2005)
New Revision: 8659

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

Log:
return ldif formatted attributes in the ejs ldb search call, so sids show up as strings
not binary blobs

Modified:
   branches/SAMBA_4_0/source/lib/ldb/include/ldb.h
   branches/SAMBA_4_0/source/lib/ldb/include/ldb_private.h
   branches/SAMBA_4_0/source/scripting/ejs/mprutil.c
   branches/SAMBA_4_0/source/scripting/ejs/smbcalls_ldb.c


Changeset:
Modified: branches/SAMBA_4_0/source/lib/ldb/include/ldb.h
===================================================================
--- branches/SAMBA_4_0/source/lib/ldb/include/ldb.h	2005-07-21 01:43:26 UTC (rev 8658)
+++ branches/SAMBA_4_0/source/lib/ldb/include/ldb.h	2005-07-21 01:56:22 UTC (rev 8659)
@@ -440,4 +440,7 @@
 int ldb_set_opaque(struct ldb_context *ldb, const char *name, void *value);
 void *ldb_get_opaque(struct ldb_context *ldb, const char *name);
 
+const struct ldb_attrib_handler *ldb_attrib_handler(struct ldb_context *ldb,
+						    const char *attrib);
+
 #endif

Modified: branches/SAMBA_4_0/source/lib/ldb/include/ldb_private.h
===================================================================
--- branches/SAMBA_4_0/source/lib/ldb/include/ldb_private.h	2005-07-21 01:43:26 UTC (rev 8658)
+++ branches/SAMBA_4_0/source/lib/ldb/include/ldb_private.h	2005-07-21 01:56:22 UTC (rev 8659)
@@ -172,9 +172,6 @@
 struct ldb_module *timestamps_module_init(struct ldb_context *ldb, const char *options[]);
 struct ldb_module *schema_module_init(struct ldb_context *ldb, const char *options[]);
 
-const struct ldb_attrib_handler *ldb_attrib_handler(struct ldb_context *ldb,
-						    const char *attrib);
-
 int ldb_match_msg(struct ldb_context *ldb, 
 		  struct ldb_message *msg,
 		  struct ldb_parse_tree *tree,

Modified: branches/SAMBA_4_0/source/scripting/ejs/mprutil.c
===================================================================
--- branches/SAMBA_4_0/source/scripting/ejs/mprutil.c	2005-07-21 01:43:26 UTC (rev 8658)
+++ branches/SAMBA_4_0/source/scripting/ejs/mprutil.c	2005-07-21 01:56:22 UTC (rev 8659)
@@ -151,7 +151,7 @@
 /*
   turn a ldb_message into a ejs object variable
 */
-struct MprVar mprLdbMessage(struct ldb_message *msg)
+static struct MprVar mprLdbMessage(struct ldb_context *ldb, struct ldb_message *msg)
 {
 	struct MprVar var;
 	int i;
@@ -166,16 +166,29 @@
 	for (i=0;i<msg->num_elements;i++) {
 		struct ldb_message_element *el = &msg->elements[i];
 		struct MprVar val;
+		const struct ldb_attrib_handler *attr;
+		struct ldb_val v;
+
+		attr = ldb_attrib_handler(ldb, el->name);
+		if (attr == NULL) {
+			goto failed;
+		}
+
 		if (el->num_values == 1 &&
 		    !str_list_check_ci(multivalued, el->name)) {
-			val = mprData(el->values[0].data, el->values[0].length);
+			if (attr->ldif_write_fn(ldb, msg, &el->values[0], &v) != 0) {
+				goto failed;
+			}
+			val = mprData(v.data, v.length);
 		} else {
 			int j;
 			val = mprObject(el->name);
 			for (j=0;j<el->num_values;j++) {
-				mprAddArray(&val, j, 
-					    mprData(el->values[j].data, 
-						    el->values[j].length));
+				if (attr->ldif_write_fn(ldb, msg, 
+							&el->values[j], &v) != 0) {
+					goto failed;
+				}
+				mprAddArray(&val, j, mprData(v.data, v.length));
 			}
 		}
 		mprSetVar(&var, el->name, val);
@@ -187,20 +200,23 @@
 	}
 	
 	return var;		
+failed:
+	return mprCreateUndefinedVar();
 }
 
 
 /*
   turn an array of ldb_messages into a ejs object variable
 */
-struct MprVar mprLdbArray(struct ldb_message **msg, int count, const char *name)
+struct MprVar mprLdbArray(struct ldb_context *ldb, 
+			  struct ldb_message **msg, int count, const char *name)
 {
 	struct MprVar res;
 	int i;
 
 	res = mprObject(name);
 	for (i=0;i<count;i++) {
-		mprAddArray(&res, i, mprLdbMessage(msg[i]));
+		mprAddArray(&res, i, mprLdbMessage(ldb, msg[i]));
 	}
 	if (i==0) {
 		mprSetVar(&res, "length", mprCreateIntegerVar(0));

Modified: branches/SAMBA_4_0/source/scripting/ejs/smbcalls_ldb.c
===================================================================
--- branches/SAMBA_4_0/source/scripting/ejs/smbcalls_ldb.c	2005-07-21 01:43:26 UTC (rev 8658)
+++ branches/SAMBA_4_0/source/scripting/ejs/smbcalls_ldb.c	2005-07-21 01:56:22 UTC (rev 8659)
@@ -103,7 +103,7 @@
 		ejsSetErrorMsg(eid, "ldb.search failed - %s", ldb_errstring(ldb));
 		mpr_Return(eid, mprCreateUndefinedVar());
 	} else {
-		mpr_Return(eid, mprLdbArray(res, ret, "ldb_message"));
+		mpr_Return(eid, mprLdbArray(ldb, res, ret, "ldb_message"));
 	}
 
 	talloc_free(tmp_ctx);



More information about the samba-cvs mailing list