summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/format.c27
1 files changed, 18 insertions, 9 deletions
diff --git a/src/format.c b/src/format.c
index a7029ea..fb32aeb 100644
--- a/src/format.c
+++ b/src/format.c
@@ -406,18 +406,27 @@ static char *
format_single(Slapi_PBlock *pb, Slapi_Entry *e, const char *attr,
char ***visited_ndns)
{
- char **values, *ret;
- int count;
- values = slapi_entry_attr_get_charray(e, attr);
- for (count = 0; (values != NULL) && (values[count] != NULL); count++) {
- continue;
+ Slapi_ValueSet *value_set;
+ Slapi_Value *value;
+ char *ret, *actual_attr;
+ const char *cret;
+ int count, disposition, buffer_flags;
+ if (slapi_vattr_values_get(e, (char *) attr, &value_set,
+ &disposition, &actual_attr,
+ 0, &buffer_flags) != 0) {
+ return NULL;
}
+ count = slapi_valueset_count(value_set);
+ ret = NULL;
if (count == 1) {
- ret = strdup(values[0]);
- } else {
- ret = NULL;
+ if (slapi_valueset_first_value(value_set, &value) == 0) {
+ cret = slapi_value_get_string(value);
+ if (cret != NULL) {
+ ret = strdup(cret);
+ }
+ }
}
- slapi_ch_array_free(values);
+ slapi_vattr_values_free(&value_set, &actual_attr, buffer_flags);
return ret;
}