1 /* value.c - routines for dealing with values */
8 #include <sys/socket.h>
15 struct berval ***vals,
16 struct berval **addvals,
24 if ( *maxvals == 0 ) {
27 need = nvals + naddvals + 1;
28 while ( *maxvals < need ) {
30 *vals = (struct berval **) ch_realloc( (char *) *vals,
31 *maxvals * sizeof(struct berval *) );
34 for ( i = 0, j = 0; i < naddvals; i++, j++ ) {
35 if ( addvals[i]->bv_len > 0 ) {
36 (*vals)[nvals + j] = ber_bvdup( addvals[i] );
39 (*vals)[nvals + j] = NULL;
46 struct berval ***vals,
47 struct berval **addvals
52 for ( nn = 0; addvals != NULL && addvals[nn] != NULL; nn++ )
55 if ( *vals == NULL ) {
56 *vals = (struct berval **) ch_malloc( (nn + 1)
57 * sizeof(struct berval *) );
60 for ( n = 0; (*vals)[n] != NULL; n++ )
62 *vals = (struct berval **) ch_realloc( (char *) *vals,
63 (n + nn + 1) * sizeof(struct berval *) );
66 for ( i = 0, j = 0; i < nn; i++ ) {
67 if ( addvals[i]->bv_len > 0 ) {
68 (*vals)[n + j++] = ber_bvdup( addvals[i] );
71 (*vals)[n + j] = NULL;
84 if ( ! (syntax & SYNTAX_CIS) ) {
88 if ( syntax & SYNTAX_DN ) {
89 (void) dn_normalize_case( s );
94 for ( d = s; *s; s++ ) {
95 if ( (syntax & SYNTAX_TEL) && (*s == ' ' || *s == '-') ) {
103 #define MIN( a, b ) (a < b ? a : b )
110 int normalize /* 1 => arg 1; 2 => arg 2; 3 => both */
114 struct stat st1, st2;
116 if ( normalize & 1 ) {
117 v1 = ber_bvdup( v1 );
118 value_normalize( v1->bv_val, syntax );
120 if ( normalize & 2 ) {
121 v2 = ber_bvdup( v2 );
122 value_normalize( v2->bv_val, syntax );
127 case (SYNTAX_CIS | SYNTAX_TEL):
128 case (SYNTAX_CIS | SYNTAX_DN):
129 rc = strcasecmp( v1->bv_val, v2->bv_val );
133 rc = strcmp( v1->bv_val, v2->bv_val );
137 rc = memcmp( v1->bv_val, v2->bv_val, MIN( v1->bv_len,
142 if ( normalize & 1 ) {
145 if ( normalize & 2 ) {
163 if ( normalize & 1 ) {
164 v1 = ber_bvdup( v1 );
165 value_normalize( v1->bv_val, syntax );
167 if ( normalize & 2 ) {
168 v2 = ber_bvdup( v2 );
169 value_normalize( v2->bv_val, syntax );
174 case (SYNTAX_CIS | SYNTAX_TEL):
175 rc = strncasecmp( v1->bv_val, v2->bv_val, len );
179 rc = strncmp( v1->bv_val, v2->bv_val, len );
183 rc = memcmp( v1->bv_val, v2->bv_val, len );
186 if ( normalize & 1 ) {
189 if ( normalize & 2 ) {
198 struct berval **vals,
206 for ( i = 0; vals[i] != NULL; i++ ) {
207 if ( value_cmp( vals[i], v, syntax, normalize ) == 0 ) {