aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--lib/libldapschema/loutput.c107
1 files changed, 64 insertions, 43 deletions
diff --git a/lib/libldapschema/loutput.c b/lib/libldapschema/loutput.c
index 1f7923d..3a73952 100644
--- a/lib/libldapschema/loutput.c
+++ b/lib/libldapschema/loutput.c
@@ -103,18 +103,11 @@ ldapschema_print_list(
103 char ** vals ); 103 char ** vals );
104 104
105void 105void
106ldapschema_print_list_attrs( 106ldapschema_print_list_models(
107 LDAPSchema * lsd, 107 LDAPSchema * lsd,
108 const char * name, 108 const char * name,
109 LDAPSchemaAttributeType ** list, 109 LDAPSchemaModel ** list,
110 size_t len ); 110 size_t list_len );
111
112void
113ldapschema_print_list_objcls(
114 LDAPSchema * lsd,
115 const char * name,
116 LDAPSchemaObjectclass ** list,
117 size_t len );
118 111
119void 112void
120ldapschema_print_unsigned( 113ldapschema_print_unsigned(
@@ -366,39 +359,67 @@ void ldapschema_print_list(const char * field, char ** vals)
366} 359}
367 360
368 361
369void ldapschema_print_list_attrs(LDAPSchema * lsd, 362void ldapschema_print_list_models(LDAPSchema * lsd,
370 const char * name, LDAPSchemaAttributeType ** list, size_t len) 363 const char * name, LDAPSchemaModel ** list, size_t list_len)
371{ 364{
372 size_t pos; 365 size_t pos;
366 const char * key;
367 size_t buff_len;
368 char buff[256];
369 size_t lineno;
373 370
374 assert(lsd != NULL); 371 assert(lsd != NULL);
375 if ( (!(list)) || (!(len)) ) 372 assert(name != NULL);
373 if ( (!(list)) || (!(list_len)) )
376 return; 374 return;
377 375
378 for(pos = 0; (pos < len); pos++) 376 lineno = 0;
379 ldapschema_print_line( 377 buff_len = 0;
380 ((!(pos))?name:""), 378 buff[0] = '\0';
381 (((list[pos]->names))?list[pos]->names[0]:list[pos]->model.oid)
382 );
383
384 return;
385}
386
387 379
388void ldapschema_print_list_objcls(LDAPSchema * lsd, 380 for(pos = 0; (pos < list_len); pos++)
389 const char * name, LDAPSchemaObjectclass ** list, size_t len) 381 {
390{ 382 key = NULL;
391 size_t pos; 383 switch(list[pos]->type)
392 384 {
393 assert(lsd != NULL); 385 case LDAPSCHEMA_ATTRIBUTETYPE:
394 if ( (!(list)) || (!(len)) ) 386 if ((((LDAPSchemaAttributeType *)list[pos])->names))
395 return; 387 key = ((LDAPSchemaAttributeType *)list[pos])->names[0];
396 388 break;
397 for(pos = 0; (pos < len); pos++) 389
398 ldapschema_print_line( 390 case LDAPSCHEMA_OBJECTCLASS:
399 ((!(pos))?name:""), 391 if ((((LDAPSchemaObjectclass *)list[pos])->names))
400 (((list[pos]->names))?list[pos]->names[0]:list[pos]->model.oid) 392 key = ((LDAPSchemaObjectclass *)list[pos])->names[0];
401 ); 393 break;
394
395 case LDAPSCHEMA_SYNTAX:
396 if ((((LDAPSchemaSyntax *)list[pos])->model.desc))
397 key = ((LDAPSchemaSyntax *)list[pos])->model.desc;
398 break;
399
400 default:
401 key = list[pos]->desc;
402 break;
403 };
404 if (!(key))
405 key = list[pos]->oid;
406 if (!(key))
407 continue;
408
409 if ((pos + 1) < list_len)
410 buff_len += (size_t)snprintf(&buff[buff_len], sizeof(buff)-buff_len, "%s, ", key );
411 else
412 buff_len += (size_t)snprintf(&buff[buff_len], sizeof(buff)-buff_len, "%s", key );
413 if (buff_len >= LDAPSCHEMA_WIDTH_VALUE)
414 {
415 ldapschema_print_line( ((!(lineno))?name:NULL), buff);
416 buff_len = 0;
417 buff[0] = '\0';
418 lineno++;
419 };
420 };
421 if ((buff_len))
422 ldapschema_print_line( ((!(lineno))?name:NULL), buff);
402 423
403 return; 424 return;
404} 425}
@@ -460,8 +481,8 @@ void ldapschema_print_obj_attributetype( LDAPSchema * lsd, LDAPSchemaAttributeTy
460 }; 481 };
461 482
462 ldapschema_print_extensions(lsd, &attr->model); 483 ldapschema_print_extensions(lsd, &attr->model);
463 ldapschema_print_list_objcls(lsd, "required by:", attr->required_by, attr->required_by_len); 484 ldapschema_print_list_models(lsd, "required by:", (LDAPSchemaModel **)attr->required_by, attr->required_by_len);
464 ldapschema_print_list_objcls(lsd, "allowed by:", attr->allowed_by, attr->allowed_by_len); 485 ldapschema_print_list_models(lsd, "allowed by:", (LDAPSchemaModel **)attr->allowed_by, attr->allowed_by_len);
465 ldapschema_print_definition(lsd, &attr->model); 486 ldapschema_print_definition(lsd, &attr->model);
466 487
467 return; 488 return;
@@ -513,10 +534,10 @@ void ldapschema_print_obj_objectclass(LDAPSchema * lsd, LDAPSchemaObjectclass *
513 ldapschema_print_line(NULL, (((sup->names))?sup->names[0]:sup->model.oid) ); 534 ldapschema_print_line(NULL, (((sup->names))?sup->names[0]:sup->model.oid) );
514 }; 535 };
515 536
516 ldapschema_print_list_attrs(lsd, "may:", objcls->may, objcls->may_len); 537 ldapschema_print_list_models(lsd, "may:", (LDAPSchemaModel **)objcls->may, objcls->may_len);
517 ldapschema_print_list_attrs(lsd, "must:", objcls->must, objcls->must_len); 538 ldapschema_print_list_models(lsd, "must:", (LDAPSchemaModel **)objcls->must, objcls->must_len);
518 ldapschema_print_list_attrs(lsd, "inherited may:", objcls->inherit_may, objcls->inherit_may_len); 539 ldapschema_print_list_models(lsd, "inherited may:", (LDAPSchemaModel **)objcls->inherit_may, objcls->inherit_may_len);
519 ldapschema_print_list_attrs(lsd, "inherited must:", objcls->inherit_must, objcls->inherit_must_len); 540 ldapschema_print_list_models(lsd, "inherited must:", (LDAPSchemaModel **)objcls->inherit_must, objcls->inherit_must_len);
520 ldapschema_print_extensions(lsd, &objcls->model); 541 ldapschema_print_extensions(lsd, &objcls->model);
521 ldapschema_print_definition(lsd, &objcls->model); 542 ldapschema_print_definition(lsd, &objcls->model);
522 543