diff options
-rw-r--r-- | src/format.c | 24 | ||||
-rw-r--r-- | src/format.h | 5 |
2 files changed, 26 insertions, 3 deletions
diff --git a/src/format.c b/src/format.c index 8db5d0a..c0fa859 100644 --- a/src/format.c +++ b/src/format.c @@ -102,7 +102,7 @@ xmemdup(char *region, int size) } /* Maintain a DN list, which is list of distinguished names. */ -static void +void format_free_sdn_list(struct slapi_dn **list) { unsigned int i; @@ -114,7 +114,7 @@ format_free_sdn_list(struct slapi_dn **list) } } -static struct slapi_dn ** +struct slapi_dn ** format_dup_sdn_list(struct slapi_dn **list) { struct slapi_dn **ret; @@ -132,7 +132,25 @@ format_dup_sdn_list(struct slapi_dn **list) return ret; } -static struct slapi_dn ** +struct slapi_dn ** +format_make_sdn_list(char **list) +{ + struct slapi_dn **ret; + unsigned int i; + for (i = 0; (list != NULL) && (list[i] != NULL); i++) { + continue; + } + ret = malloc((i + 1) * sizeof(struct slapi_dn*)); + if (ret != NULL) { + for (i = 0; (list != NULL) && (list[i] != NULL); i++) { + ret[i] = slapi_sdn_new_dn_byval(list[i]); + } + ret[i] = NULL; + } + return ret; +} + +struct slapi_dn ** format_add_sdn_list(struct slapi_dn ***list, const char *dn) { struct slapi_dn **ret, *sdn; diff --git a/src/format.h b/src/format.h index 4cdb2ce..7f33133 100644 --- a/src/format.h +++ b/src/format.h @@ -48,6 +48,11 @@ void format_free_ref_attr_list(struct format_ref_attr_list **); struct format_ref_attr_list ** format_dup_ref_attr_list(struct format_ref_attr_list **); +void format_free_sdn_list(struct slapi_dn **list); +struct slapi_dn **format_dup_sdn_list(struct slapi_dn **list); +struct slapi_dn **format_make_sdn_list(char **list); +struct slapi_dn **format_add_sdn_list(struct slapi_dn ***list, const char *dn); + void format_free_data(char *data); char *format_get_data(struct plugin_state *state, struct slapi_entry *e, const char *domain, const char *map, |