r5357: added ldb_msg_add_fmt(), for creating formatted ldb record values
authorAndrew Tridgell <tridge@samba.org>
Sat, 12 Feb 2005 11:30:33 +0000 (11:30 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:09:45 +0000 (13:09 -0500)
(This used to be commit 18fb48204f4c0e22ea7e61575b3f174f30ff035c)

source4/lib/ldb/common/ldb_msg.c
source4/lib/ldb/include/ldb.h

index 3ef25e566f99270588d23d60fdb5b952185f8494..b145565a84e681bd518dd6c198edb3a3919e639a 100644 (file)
@@ -212,6 +212,28 @@ int ldb_msg_add_string(struct ldb_context *ldb, struct ldb_message *msg,
        return ldb_msg_add_value(ldb, msg, attr_name, &val);
 }
 
+/*
+  add a printf formatted element to a message
+*/
+int ldb_msg_add_fmt(struct ldb_context *ldb, struct ldb_message *msg, 
+                   const char *attr_name, const char *fmt, ...)
+{
+       struct ldb_val val;
+       va_list ap;
+       char *str;
+
+       va_start(ap, fmt);
+       str = talloc_vasprintf(msg, fmt, ap);
+       va_end(ap);
+
+       if (str == NULL) return -1;
+
+       val.data   = str;
+       val.length = strlen(str);
+
+       return ldb_msg_add_value(ldb, msg, attr_name, &val);
+}
+
 /*
   compare two ldb_message_element structures
   assumes case senistive comparison
index 310000b2443996a2447a680a6fbe91dfe36b60fa..c6f96f6dea60e38965580aec9106306eb180267e 100644 (file)
@@ -259,6 +259,8 @@ int ldb_msg_add_value(struct ldb_context *ldb,
                      const struct ldb_val *val);
 int ldb_msg_add_string(struct ldb_context *ldb, struct ldb_message *msg, 
                       const char *attr_name, const char *str);
+int ldb_msg_add_fmt(struct ldb_context *ldb, struct ldb_message *msg, 
+                   const char *attr_name, const char *fmt, ...) PRINTF_ATTRIBUTE(4,5);
 
 /* compare two message elements - return 0 on match */
 int ldb_msg_element_compare(struct ldb_message_element *el1,