diff options
-rw-r--r-- | src/format.c | 27 |
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; } |