Simplify the external libnsdb API by removing the *ldaperr argument from nsdb_list_s() and friends. When it is needed, the ldaperr value can be extracted with the new nsdb_ldaperr() function.
Signed-off-by: Chuck Lever <[email protected]> --- src/include/nsdb.h | 3 +-- src/libnsdb/fileserver.c | 29 +++++++++++------------------ src/nsdbc/nsdb-list.c | 28 +++++++++++----------------- 3 files changed, 23 insertions(+), 37 deletions(-) diff --git a/src/include/nsdb.h b/src/include/nsdb.h index 3a183c2..2aafcb5 100644 --- a/src/include/nsdb.h +++ b/src/include/nsdb.h @@ -400,8 +400,7 @@ FedFsStatus nsdb_get_fsn_s(nsdb_t host, const char *nce, /** * Enumerate FSNs */ -FedFsStatus nsdb_list_s(nsdb_t host, const char *nce, char ***fsns, - unsigned int *ldap_err); +FedFsStatus nsdb_list_s(nsdb_t host, const char *nce, char ***fsns); /** * Ping an NSDB host diff --git a/src/libnsdb/fileserver.c b/src/libnsdb/fileserver.c index 0ad9a35..222b47a 100644 --- a/src/libnsdb/fileserver.c +++ b/src/libnsdb/fileserver.c @@ -1754,7 +1754,6 @@ nsdb_parse_fsn_entry(LDAP *ld, LDAPMessage *entry, char ***fsns) * @param host an initialized and bound nsdb_t object * @param nce a NUL-terminated C string containing the DN of the NSDB container * @param fsns OUT: pointer to an array of NUL-terminated C strings containing FSN UUIDs - * @param ldap_err OUT: possibly an LDAP error code * @return a FedFsStatus code * * ldapsearch equivalent: @@ -1765,18 +1764,17 @@ nsdb_parse_fsn_entry(LDAP *ld, LDAPMessage *entry, char ***fsns) @endverbatim */ static FedFsStatus -nsdb_list_find_entries_s(nsdb_t host, const char *nce, char ***fsns, - unsigned int *ldap_err) +nsdb_list_find_entries_s(nsdb_t host, const char *nce, char ***fsns) { LDAPMessage *response, *message; LDAP *ld = host->fn_ldap; FedFsStatus retval; - int rc, entries; + int entries; char **tmp; - rc = nsdb_search_nsdb_all_s(ld, nce, LDAP_SCOPE_ONE, + host->fn_ldaperr = nsdb_search_nsdb_all_s(ld, nce, LDAP_SCOPE_ONE, "(objectClass=fedfsFsn)", &response); - switch (rc) { + switch (host->fn_ldaperr) { case LDAP_SUCCESS: case LDAP_REFERRAL: break; @@ -1786,8 +1784,7 @@ nsdb_list_find_entries_s(nsdb_t host, const char *nce, char ***fsns, return FEDFS_ERR_NSDB_NOFSN; default: xlog(D_GENERAL, "%s: LDAP search failed: %s\n", - __func__, ldap_err2string(rc)); - *ldap_err = rc; + __func__, ldap_err2string(host->fn_ldaperr)); return FEDFS_ERR_NSDB_LDAP_VAL; } if (response == NULL) { @@ -1822,7 +1819,7 @@ nsdb_list_find_entries_s(nsdb_t host, const char *nce, char ***fsns, case LDAP_RES_SEARCH_RESULT: retval = nsdb_parse_result(ld, message, &host->fn_referrals, - ldap_err); + &host->fn_ldaperr); break; default: xlog(L_ERROR, "%s: Unrecognized LDAP message type", @@ -1854,13 +1851,12 @@ out: * @param host an initialized and bound nsdb_t object * @param nce a NUL-terminated C string containing DN of NSDB container entry * @param fsns OUT: pointer to an array of NUL-terminated C strings containing FSN UUIDs - * @param ldap_err OUT: possibly an LDAP error code * @return a FedFsStatus code * * If caller did not provide an NCE, discover one by querying the NSDB. */ FedFsStatus -nsdb_list_s(nsdb_t host, const char *nce, char ***fsns, unsigned int *ldap_err) +nsdb_list_s(nsdb_t host, const char *nce, char ***fsns) { char **contexts, **nce_list; FedFsStatus retval; @@ -1876,13 +1872,13 @@ nsdb_list_s(nsdb_t host, const char *nce, char ***fsns, unsigned int *ldap_err) return FEDFS_ERR_INVAL; } - if (fsns == NULL || ldap_err == NULL) { + if (fsns == NULL) { xlog(L_ERROR, "%s: Invalid parameter", __func__); return FEDFS_ERR_INVAL; } if (nce != NULL) - return nsdb_list_find_entries_s(host, nce, fsns, ldap_err); + return nsdb_list_find_entries_s(host, nce, fsns); /* * Caller did not provide an nce. Discover the server's NSDB @@ -1890,10 +1886,8 @@ nsdb_list_s(nsdb_t host, const char *nce, char ***fsns, unsigned int *ldap_err) * containers. */ retval = nsdb_get_naming_contexts_s(host, &contexts); - if (retval != FEDFS_OK) { - *ldap_err = (unsigned int)nsdb_ldaperr(host); + if (retval != FEDFS_OK) return retval; - } for (i = 0; contexts[i] != NULL; i++); nce_list = calloc(i + 1, sizeof(char *)); @@ -1914,8 +1908,7 @@ nsdb_list_s(nsdb_t host, const char *nce, char ***fsns, unsigned int *ldap_err) goto out; for (j = 0; nce_list[j] != NULL; j++) { - retval = nsdb_list_find_entries_s(host, nce_list[j], - fsns, ldap_err); + retval = nsdb_list_find_entries_s(host, nce_list[j], fsns); if (retval == FEDFS_OK) break; } diff --git a/src/nsdbc/nsdb-list.c b/src/nsdbc/nsdb-list.c index bfd15b1..43f3410 100644 --- a/src/nsdbc/nsdb-list.c +++ b/src/nsdbc/nsdb-list.c @@ -145,17 +145,16 @@ nsdb_list_resolve_and_display_fsn(nsdb_t host, const char *nce, const char *fsn_ * * @param host an initialized and bound nsdb_t object * @param nce a NUL-terminated C string containing DN of NSDB container entry - * @param ldap_err OUT: possibly an LDAP error code * @return a FedFsStatus code */ static FedFsStatus -nsdb_list_display_one_nce(nsdb_t host, const char *nce, unsigned int *ldap_err) +nsdb_list_display_one_nce(nsdb_t host, const char *nce) { FedFsStatus retval; char **fsns; int i; - retval = nsdb_list_s(host, nce, &fsns, ldap_err); + retval = nsdb_list_s(host, nce, &fsns); switch (retval) { case FEDFS_OK: printf(" NCE: %s\n\n", nce); @@ -183,14 +182,13 @@ nsdb_list_display_one_nce(nsdb_t host, const char *nce, unsigned int *ldap_err) * * @param host an initialized and bound nsdb_t object * @param nce a NUL-terminated C string containing DN of NSDB container entry - * @param ldap_err OUT: possibly an LDAP error code * @return a FedFsStatus code */ static FedFsStatus -nsdb_list_display_nce(nsdb_t host, const char *nce, unsigned int *ldap_err) +nsdb_list_display_nce(nsdb_t host, const char *nce) { printf("NSDB: %s:%u\n\n", nsdb_hostname(host), nsdb_port(host)); - return nsdb_list_display_one_nce(host, nce, ldap_err); + return nsdb_list_display_one_nce(host, nce); } @@ -198,21 +196,18 @@ nsdb_list_display_nce(nsdb_t host, const char *nce, unsigned int *ldap_err) * Display FSNs under all NCEs, with header * * @param host an initialized and bound nsdb_t object - * @param ldap_err OUT: possibly an LDAP error code * @return a FedFsStatus code */ static FedFsStatus -nsdb_list_display_all_nces(nsdb_t host, unsigned int *ldap_err) +nsdb_list_display_all_nces(nsdb_t host) { char *dn, **contexts; FedFsStatus retval; int i; retval = nsdb_get_naming_contexts_s(host, &contexts); - if (retval != FEDFS_OK) { - *ldap_err = (unsigned int)nsdb_ldaperr(host); + if (retval != FEDFS_OK) return retval; - } printf("NSDB: %s:%u\n\n", nsdb_hostname(host), nsdb_port(host)); @@ -220,7 +215,7 @@ nsdb_list_display_all_nces(nsdb_t host, unsigned int *ldap_err) for (i = 0; contexts[i] != NULL; i++) { retval = nsdb_get_ncedn_s(host, contexts[i], &dn); if (retval == FEDFS_OK) { - retval = nsdb_list_display_one_nce(host, dn, ldap_err); + retval = nsdb_list_display_one_nce(host, dn); free(dn); if (retval != FEDFS_OK) break; @@ -289,7 +284,6 @@ main(int argc, char **argv) { char *progname, *nsdbname; unsigned short nsdbport; - unsigned int ldap_err; FedFsStatus retval; nsdb_t host; char *nce; @@ -387,11 +381,11 @@ again: } if (nce != NULL) - retval = nsdb_list_display_nce(host, nce, &ldap_err); + retval = nsdb_list_display_nce(host, nce); else - retval = nsdb_list_display_all_nces(host, &ldap_err); + retval = nsdb_list_display_all_nces(host); if (retval == FEDFS_ERR_NSDB_LDAP_VAL) { - switch (ldap_err) { + switch (nsdb_ldaperr(host)) { case LDAP_REFERRAL: retval = nsdb_list_follow_ldap_referral(&host); if (retval == FEDFS_OK) @@ -403,7 +397,7 @@ again: break; default: fprintf(stderr, "Failed to list FSNs: %s\n", - ldap_err2string(ldap_err)); + nsdb_ldaperr2string(host)); } } _______________________________________________ fedfs-utils-devel mailing list [email protected] https://oss.oracle.com/mailman/listinfo/fedfs-utils-devel
