summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/format.c24
-rw-r--r--src/format.h5
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,