aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorDavid M. Syzdek <david@syzdek.net>2019-11-26 22:41:48 -0900
committerDavid M. Syzdek <david@syzdek.net>2019-11-26 22:41:48 -0900
commitbc56de704b22c795da3d117cee6b63963dc15ac6 (patch)
treeeb4636e04c0f0ad25b992d0ab1e7bcd25af05d09
parent90c8c44c7c40380ede7092bf78a79b5737b33ca5 (diff)
downloadldap-utils-bc56de704b22c795da3d117cee6b63963dc15ac6.tar.gz
ldap-utils-bc56de704b22c795da3d117cee6b63963dc15ac6.tar.bz2
ldap-utils-bc56de704b22c795da3d117cee6b63963dc15ac6.tar.xz
ldap-utils-bc56de704b22c795da3d117cee6b63963dc15ac6.zip
ldapschema: refactoring my_run_details() to better support related data
-rw-r--r--src/ldapschema.c90
1 files changed, 62 insertions, 28 deletions
diff --git a/src/ldapschema.c b/src/ldapschema.c
index 983a76a..cf5506b 100644
--- a/src/ldapschema.c
+++ b/src/ldapschema.c
@@ -513,32 +513,68 @@ int my_run_details(MyConfig * cnf)
513 // look for matching matchingRules and add ldapSyntax 513 // look for matching matchingRules and add ldapSyntax
514 for(idx = 0; ((cnf->args[idx])); idx++) 514 for(idx = 0; ((cnf->args[idx])); idx++)
515 { 515 {
516 if ((mtchngrl = ldapschema_find_matchingrule(cnf->lsd, cnf->args[idx])) != NULL) 516 if ((mtchngrl = ldapschema_find_matchingrule(cnf->lsd, cnf->args[idx])) == NULL)
517 { 517 continue;
518 ldapschema_get_info_matchingrule(cnf->lsd, mtchngrl, LDAPSCHEMA_FLD_SYNTAX, &syntax); 518 ldapschema_get_info_matchingrule(cnf->lsd, mtchngrl, LDAPSCHEMA_FLD_SYNTAX, &syntax);
519 if ((syntax)) 519 my_list_add(&list, &list_len, (LDAPSchemaModel *)syntax);
520 my_list_add(&list, &list_len, (LDAPSchemaModel *)syntax);
521 };
522 }; 520 };
523 521
524 // look for matching attributeType and add syntaxes 522 // look for matching attributeType and add syntaxes
525 for(idx = 0; (((cnf->args[idx])) && (!(cnf->noextra))); idx++) 523 for(idx = 0; (((cnf->args[idx])) && (!(cnf->noextra))); idx++)
526 { 524 {
527 if ((attr = ldapschema_find_attributetype(cnf->lsd, cnf->args[idx])) != NULL) 525 if ((attr = ldapschema_find_attributetype(cnf->lsd, cnf->args[idx])) == NULL)
526 continue;
527 ldapschema_get_info_attributetype(cnf->lsd, attr, LDAPSCHEMA_FLD_SYNTAX, &syntax);
528 my_list_add(&list, &list_len, (LDAPSchemaModel *)syntax);
529 ldapschema_get_info_attributetype(cnf->lsd, attr, LDAPSCHEMA_FLD_SUPERIOR, &attrsup);
530 while ((attrsup))
528 { 531 {
532 attr = attrsup;
529 ldapschema_get_info_attributetype(cnf->lsd, attr, LDAPSCHEMA_FLD_SYNTAX, &syntax); 533 ldapschema_get_info_attributetype(cnf->lsd, attr, LDAPSCHEMA_FLD_SYNTAX, &syntax);
530 my_list_add(&list, &list_len, (LDAPSchemaModel *)syntax); 534 my_list_add(&list, &list_len, (LDAPSchemaModel *)syntax);
531 ldapschema_get_info_attributetype(cnf->lsd, attr, LDAPSCHEMA_FLD_SUPERIOR, &attrsup); 535 ldapschema_get_info_attributetype(cnf->lsd, attr, LDAPSCHEMA_FLD_SUPERIOR, &attrsup);
532 while ((attrsup))
533 {
534 attr = attrsup;
535 ldapschema_get_info_attributetype(cnf->lsd, attr, LDAPSCHEMA_FLD_SYNTAX, &syntax);
536 my_list_add(&list, &list_len, (LDAPSchemaModel *)syntax);
537 ldapschema_get_info_attributetype(cnf->lsd, attr, LDAPSCHEMA_FLD_SUPERIOR, &attrsup);
538 };
539 }; 536 };
540 }; 537 };
541 538
539 // look for matching attributeType and add matchingRules
540 for(idx = 0; (((cnf->args[idx])) && (!(cnf->noextra))); idx++)
541 {
542 if ((attr = ldapschema_find_attributetype(cnf->lsd, cnf->args[idx])) == NULL)
543 continue;
544
545 // add syntaxes
546 ldapschema_get_info_attributetype(cnf->lsd, attr, LDAPSCHEMA_FLD_EQUALITY, &mtchngrl);
547 if ((mtchngrl))
548 {
549 ldapschema_get_info_matchingrule(cnf->lsd, mtchngrl, LDAPSCHEMA_FLD_SYNTAX, &syntax);
550 my_list_add(&list, &list_len, (LDAPSchemaModel *)syntax);
551 };
552
553 ldapschema_get_info_attributetype(cnf->lsd, attr, LDAPSCHEMA_FLD_ORDERING, &mtchngrl);
554 if ((mtchngrl))
555 {
556 ldapschema_get_info_matchingrule(cnf->lsd, mtchngrl, LDAPSCHEMA_FLD_SYNTAX, &syntax);
557 my_list_add(&list, &list_len, (LDAPSchemaModel *)syntax);
558 };
559
560 ldapschema_get_info_attributetype(cnf->lsd, attr, LDAPSCHEMA_FLD_SUBSTR, &mtchngrl);
561 if ((mtchngrl))
562 {
563 ldapschema_get_info_matchingrule(cnf->lsd, mtchngrl, LDAPSCHEMA_FLD_SYNTAX, &syntax);
564 my_list_add(&list, &list_len, (LDAPSchemaModel *)syntax);
565 };
566
567 // add matching rules
568 ldapschema_get_info_attributetype(cnf->lsd, attr, LDAPSCHEMA_FLD_EQUALITY, &mtchngrl);
569 my_list_add(&list, &list_len, (LDAPSchemaModel *)mtchngrl);
570
571 ldapschema_get_info_attributetype(cnf->lsd, attr, LDAPSCHEMA_FLD_ORDERING, &mtchngrl);
572 my_list_add(&list, &list_len, (LDAPSchemaModel *)mtchngrl);
573
574 ldapschema_get_info_attributetype(cnf->lsd, attr, LDAPSCHEMA_FLD_SUBSTR, &mtchngrl);
575 my_list_add(&list, &list_len, (LDAPSchemaModel *)mtchngrl);
576 };
577
542 // look for matching matchingRule 578 // look for matching matchingRule
543 for(idx = 0; ((cnf->args[idx])); idx++) 579 for(idx = 0; ((cnf->args[idx])); idx++)
544 if ((mtchngrl = ldapschema_find_matchingrule(cnf->lsd, cnf->args[idx])) != NULL) 580 if ((mtchngrl = ldapschema_find_matchingrule(cnf->lsd, cnf->args[idx])) != NULL)
@@ -547,15 +583,14 @@ int my_run_details(MyConfig * cnf)
547 // look for matching attributeType and add attributes 583 // look for matching attributeType and add attributes
548 for(idx = 0; (((cnf->args[idx])) && (!(cnf->noextra))); idx++) 584 for(idx = 0; (((cnf->args[idx])) && (!(cnf->noextra))); idx++)
549 { 585 {
550 if ((attr = ldapschema_find_attributetype(cnf->lsd, cnf->args[idx])) != NULL) 586 if ((attr = ldapschema_find_attributetype(cnf->lsd, cnf->args[idx])) == NULL)
587 continue;
588 ldapschema_get_info_attributetype(cnf->lsd, attr, LDAPSCHEMA_FLD_SUPERIOR, &attrsup);
589 while ((attrsup))
551 { 590 {
591 attr = attrsup;
592 my_list_add(&list, &list_len, (LDAPSchemaModel *)attr);
552 ldapschema_get_info_attributetype(cnf->lsd, attr, LDAPSCHEMA_FLD_SUPERIOR, &attrsup); 593 ldapschema_get_info_attributetype(cnf->lsd, attr, LDAPSCHEMA_FLD_SUPERIOR, &attrsup);
553 while ((attrsup))
554 {
555 attr = attrsup;
556 my_list_add(&list, &list_len, (LDAPSchemaModel *)attr);
557 ldapschema_get_info_attributetype(cnf->lsd, attr, LDAPSCHEMA_FLD_SUPERIOR, &attrsup);
558 };
559 }; 594 };
560 }; 595 };
561 for(idx = 0; ((cnf->args[idx])); idx++) 596 for(idx = 0; ((cnf->args[idx])); idx++)
@@ -565,15 +600,14 @@ int my_run_details(MyConfig * cnf)
565 // look for matching objectclasses 600 // look for matching objectclasses
566 for(idx = 0; (((cnf->args[idx])) && (!(cnf->noextra))); idx++) 601 for(idx = 0; (((cnf->args[idx])) && (!(cnf->noextra))); idx++)
567 { 602 {
568 if ((objcls = ldapschema_find_objectclass(cnf->lsd, cnf->args[idx])) != NULL) 603 if ((objcls = ldapschema_find_objectclass(cnf->lsd, cnf->args[idx])) == NULL)
604 continue;
605 ldapschema_get_info_objectclass(cnf->lsd, objcls, LDAPSCHEMA_FLD_SUPERIOR, &objclssup);
606 while ((objclssup))
569 { 607 {
608 objcls = objclssup;
609 my_list_add(&list, &list_len, (LDAPSchemaModel *)objcls);
570 ldapschema_get_info_objectclass(cnf->lsd, objcls, LDAPSCHEMA_FLD_SUPERIOR, &objclssup); 610 ldapschema_get_info_objectclass(cnf->lsd, objcls, LDAPSCHEMA_FLD_SUPERIOR, &objclssup);
571 while ((objclssup))
572 {
573 objcls = objclssup;
574 my_list_add(&list, &list_len, (LDAPSchemaModel *)objcls);
575 ldapschema_get_info_objectclass(cnf->lsd, objcls, LDAPSCHEMA_FLD_SUPERIOR, &objclssup);
576 };
577 }; 611 };
578 }; 612 };
579 for(idx = 0; ((cnf->args[idx])); idx++) 613 for(idx = 0; ((cnf->args[idx])); idx++)