diff options
| author | David M. Syzdek <david@syzdek.net> | 2019-11-26 22:41:48 -0900 |
|---|---|---|
| committer | David M. Syzdek <david@syzdek.net> | 2019-11-26 22:41:48 -0900 |
| commit | bc56de704b22c795da3d117cee6b63963dc15ac6 (patch) | |
| tree | eb4636e04c0f0ad25b992d0ab1e7bcd25af05d09 | |
| parent | 90c8c44c7c40380ede7092bf78a79b5737b33ca5 (diff) | |
| download | ldap-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.c | 90 |
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++) |
