diff options
author | Stephen Gallagher <sgallagh@redhat.com> | 2011-06-06 22:26:28 -0400 |
---|---|---|
committer | Stephen Gallagher <sgallagh@redhat.com> | 2011-07-08 15:12:24 -0400 |
commit | 31442edcf62c284d5d983bda48e51ae55b70ebdf (patch) | |
tree | 4aa2287aad43a30c5ac72d0786782f81aa71d8e9 | |
parent | 5dcaf08d0ae528318d2fb7dd9a6d37abbface6b8 (diff) | |
download | sssd-31442edcf62c284d5d983bda48e51ae55b70ebdf.tar.gz sssd-31442edcf62c284d5d983bda48e51ae55b70ebdf.tar.bz2 sssd-31442edcf62c284d5d983bda48e51ae55b70ebdf.zip |
Add helper function msgs2attrs_array
This function converts a list of ldb_messages into a list of
sysdb_attrs.
-rw-r--r-- | src/providers/ldap/ldap_common.c | 29 | ||||
-rw-r--r-- | src/providers/ldap/ldap_common.h | 4 |
2 files changed, 33 insertions, 0 deletions
diff --git a/src/providers/ldap/ldap_common.c b/src/providers/ldap/ldap_common.c index 2ffa878d..5b75cf28 100644 --- a/src/providers/ldap/ldap_common.c +++ b/src/providers/ldap/ldap_common.c @@ -1062,3 +1062,32 @@ char *sdap_get_id_specific_filter(TALLOC_CTX *mem_ctx, } return filter; /* NULL or not */ } + +errno_t msgs2attrs_array(TALLOC_CTX *mem_ctx, size_t count, + struct ldb_message **msgs, + struct sysdb_attrs ***attrs) +{ + int i; + struct sysdb_attrs **a; + + a = talloc_array(mem_ctx, struct sysdb_attrs *, count); + if (a == NULL) { + DEBUG(1, ("talloc_array failed.\n")); + return ENOMEM; + } + + for (i = 0; i < count; i++) { + a[i] = talloc(a, struct sysdb_attrs); + if (a[i] == NULL) { + DEBUG(1, ("talloc_array failed.\n")); + talloc_free(a); + return ENOMEM; + } + a[i]->num = msgs[i]->num_elements; + a[i]->a = talloc_steal(a[i], msgs[i]->elements); + } + + *attrs = a; + + return EOK; +} diff --git a/src/providers/ldap/ldap_common.h b/src/providers/ldap/ldap_common.h index f4746805..2d4b1755 100644 --- a/src/providers/ldap/ldap_common.h +++ b/src/providers/ldap/ldap_common.h @@ -166,4 +166,8 @@ char *sdap_get_id_specific_filter(TALLOC_CTX *mem_ctx, char *base_filter, char *extra_filter); +errno_t msgs2attrs_array(TALLOC_CTX *mem_ctx, size_t count, + struct ldb_message **msgs, + struct sysdb_attrs ***attrs); + #endif /* _LDAP_COMMON_H_ */ |