+int
+attr_merge_one(
+ Entry *e,
+ AttributeDescription *desc,
+ struct berval *val )
+{
+ Attribute **a;
+
+ for ( a = &e->e_attrs; *a != NULL; a = &(*a)->a_next ) {
+ if ( ad_cmp( (*a)->a_desc, desc ) == 0 ) {
+ break;
+ }
+ }
+
+ if ( *a == NULL ) {
+ *a = (Attribute *) ch_malloc( sizeof(Attribute) );
+ (*a)->a_desc = desc;
+ (*a)->a_vals = NULL;
+ (*a)->a_next = NULL;
+ (*a)->a_flags = 0;
+ }
+
+ return( value_add_one( &(*a)->a_vals, val ) );
+}
+