diff options
author | Nalin Dahyabhai <nalin@dahyabhai.net> | 2008-12-08 11:49:54 -0500 |
---|---|---|
committer | Nalin Dahyabhai <nalin@dahyabhai.net> | 2008-12-08 11:49:54 -0500 |
commit | 90c203ee7262eadc661fa8a8e32e6c07d06a6114 (patch) | |
tree | b7bf901b8cbc3b34215bb108807f8ad2fe65a933 /src | |
parent | e59d669e32e297d5d2259ce714d9c63c14d8bdd2 (diff) | |
download | slapi-nis-90c203ee7262eadc661fa8a8e32e6c07d06a6114.tar.gz slapi-nis-90c203ee7262eadc661fa8a8e32e6c07d06a6114.tar.xz slapi-nis-90c203ee7262eadc661fa8a8e32e6c07d06a6114.zip |
- merge discovered values rather than straight-out adding them, so that
the duplicates don't show up in the constructed entry
Diffstat (limited to 'src')
-rw-r--r-- | src/back-sch.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/back-sch.c b/src/back-sch.c index 57c21e2..fec439a 100644 --- a/src/back-sch.c +++ b/src/back-sch.c @@ -266,7 +266,7 @@ backend_set_entry(Slapi_Entry *e, struct backend_set_data *data) Slapi_Entry *entry; Slapi_DN *e_dn, *sdn; Slapi_RDN *srdn; - Slapi_Value *value; + Slapi_Value *value[2]; plugin_id = data->common.state->plugin_desc->spd_id; e_dn = slapi_entry_get_sdn(e); @@ -300,7 +300,8 @@ backend_set_entry(Slapi_Entry *e, struct backend_set_data *data) time(NULL), 0); /* Iterate through the set of attributes. */ if (data->attribute_format != NULL) { - value = slapi_value_new(); + value[0] = slapi_value_new(); + value[1] = NULL; for (i = 0; data->attribute_format[i] != NULL; i++) { /* Expand the format specifier into a list. */ ava_lens = NULL; @@ -316,7 +317,7 @@ backend_set_entry(Slapi_Entry *e, struct backend_set_data *data) &ava_lens); if ((ava != NULL) && (ava_lens != NULL) && - (value != NULL)) { + (value[0] != NULL)) { for (j = 0; ava[j] != NULL; j++) { /* Assume attribute=value. */ val = memchr(ava[j], '=', @@ -327,21 +328,21 @@ backend_set_entry(Slapi_Entry *e, struct backend_set_data *data) if ((val != NULL) && (ava_lens[j] > val + 1 - ava[j])) { *val = '\0'; - slapi_value_set(value, + slapi_value_set(value[0], val + 1, ava_lens[j] - (val + 1 - ava[j])); - slapi_entry_add_value(entry, - ava[j], - value); + slapi_entry_merge_values_sv(entry, + ava[j], + value); *val = '='; } } } format_free_data_set(ava, ava_lens); } - slapi_value_free(&value); + slapi_value_free(&value[0]); } /* Try to make the entry look "right". */ if (!slapi_entry_rdn_values_present(entry)) { |