From 266fd9834133e31c51b9e967307a793e5a49258e Mon Sep 17 00:00:00 2001 From: Jan Zeleny Date: Mon, 16 Jul 2012 13:52:49 -0400 Subject: Add function sysdb_attrs_copy_values() This function copies all values from one sysdb_attrs structure to another --- src/db/sysdb.c | 24 ++++++++++++++++++++++++ src/db/sysdb.h | 3 +++ 2 files changed, 27 insertions(+) (limited to 'src') diff --git a/src/db/sysdb.c b/src/db/sysdb.c index fd76f73c3..7f7310a2c 100644 --- a/src/db/sysdb.c +++ b/src/db/sysdb.c @@ -604,6 +604,30 @@ int sysdb_attrs_add_time_t(struct sysdb_attrs *attrs, return ret; } +int sysdb_attrs_copy_values(struct sysdb_attrs *src, + struct sysdb_attrs *dst, + const char *name) +{ + int ret = EOK; + int i; + struct ldb_message_element *src_el; + + ret = sysdb_attrs_get_el(src, name, &src_el); + if (ret != EOK) { + goto done; + } + + for (i = 0; i < src_el->num_values; i++) { + ret = sysdb_attrs_add_val(dst, name, &src_el->values[i]); + if (ret != EOK) { + goto done; + } + } + +done: + return ret; +} + int sysdb_attrs_users_from_str_list(struct sysdb_attrs *attrs, const char *attr_name, const char *domain, diff --git a/src/db/sysdb.h b/src/db/sysdb.h index f0ff6f5a8..5baac98b3 100644 --- a/src/db/sysdb.h +++ b/src/db/sysdb.h @@ -268,6 +268,9 @@ int sysdb_attrs_add_uint32(struct sysdb_attrs *attrs, const char *name, uint32_t value); int sysdb_attrs_add_time_t(struct sysdb_attrs *attrs, const char *name, time_t value); +int sysdb_attrs_copy_values(struct sysdb_attrs *src, + struct sysdb_attrs *dst, + const char *name); int sysdb_attrs_get_el(struct sysdb_attrs *attrs, const char *name, struct ldb_message_element **el); int sysdb_attrs_steal_string(struct sysdb_attrs *attrs, -- cgit