From ff4797a9e4b01fe8cc9421e911371677433d070c Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sat, 12 Feb 2005 11:30:33 +0000 Subject: r5357: added ldb_msg_add_fmt(), for creating formatted ldb record values (This used to be commit 18fb48204f4c0e22ea7e61575b3f174f30ff035c) --- source4/lib/ldb/common/ldb_msg.c | 22 ++++++++++++++++++++++ source4/lib/ldb/include/ldb.h | 2 ++ 2 files changed, 24 insertions(+) (limited to 'source4/lib') diff --git a/source4/lib/ldb/common/ldb_msg.c b/source4/lib/ldb/common/ldb_msg.c index 3ef25e566f..b145565a84 100644 --- a/source4/lib/ldb/common/ldb_msg.c +++ b/source4/lib/ldb/common/ldb_msg.c @@ -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 diff --git a/source4/lib/ldb/include/ldb.h b/source4/lib/ldb/include/ldb.h index 310000b244..c6f96f6dea 100644 --- a/source4/lib/ldb/include/ldb.h +++ b/source4/lib/ldb/include/ldb.h @@ -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, -- cgit