ava.c 885 Bytes
Newer Older
1
/* $OpenLDAP$ */
Kurt Zeilenga's avatar
Kurt Zeilenga committed
2
3
4
5
/*
 * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved.
 * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
 */
Kurt Zeilenga's avatar
Kurt Zeilenga committed
6
7
/* ava.c - routines for dealing with attribute value assertions */

Kurt Zeilenga's avatar
Kurt Zeilenga committed
8
9
#include "portable.h"

Kurt Zeilenga's avatar
Kurt Zeilenga committed
10
#include <stdio.h>
Kurt Zeilenga's avatar
Kurt Zeilenga committed
11
12
13
14

#include <ac/string.h>
#include <ac/socket.h>

Kurt Zeilenga's avatar
Kurt Zeilenga committed
15
16
17
18
19
20
21
22
23
24
25
#include "slap.h"

int
get_ava(
    BerElement	*ber,
    Ava		*ava
)
{
	if ( ber_scanf( ber, "{ao}", &ava->ava_type, &ava->ava_value )
	    == LBER_ERROR ) {
		Debug( LDAP_DEBUG_ANY, "  get_ava ber_scanf\n", 0, 0, 0 );
26
		return( -1 );
Kurt Zeilenga's avatar
Kurt Zeilenga committed
27
	}
28

Kurt Zeilenga's avatar
Kurt Zeilenga committed
29
	attr_normalize( ava->ava_type );
30

31
#ifndef SLAPD_SCHEMA_NOT_COMPAT
Kurt Zeilenga's avatar
Kurt Zeilenga committed
32
	value_normalize( ava->ava_value.bv_val, attr_syntax( ava->ava_type ) );
33
#endif
Kurt Zeilenga's avatar
Kurt Zeilenga committed
34

35
	return( LDAP_SUCCESS );
Kurt Zeilenga's avatar
Kurt Zeilenga committed
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
}

void
ava_free(
    Ava	*ava,
    int	freeit
)
{
	free( (char *) ava->ava_type );
	free( (char *) ava->ava_value.bv_val );
	if ( freeit ) {
		free( (char *) ava );
	}
}