Lines Matching refs:mod
484 ns_mod mod;
487 memset(&mod, 0, sizeof(mod));
488 mod.name = strdup(source);
489 if (mod.name == NULL) {
497 mod.handle = nss_builtin_handle;
512 if (snprintf(buf, sizeof(buf), "nss_%s.so.%d", mod.name,
515 mod.handle = libc_dlopen(buf, RTLD_LOCAL|RTLD_LAZY);
516 if (mod.handle == NULL) {
521 nss_log(LOG_DEBUG, "%s, %s", mod.name, dlerror());
525 fn = (nss_module_register_fn)dlfunc(mod.handle,
528 (void)dlclose(mod.handle);
529 mod.handle = NULL;
530 nss_log(LOG_ERR, "%s, %s", mod.name, dlerror());
534 mod.mtab = fn(mod.name, &mod.mtabsize, &mod.unregister);
535 if (mod.mtab == NULL || mod.mtabsize == 0) {
536 if (mod.handle != nss_builtin_handle)
537 (void)dlclose(mod.handle);
538 mod.handle = NULL;
539 nss_log(LOG_ERR, "%s, registration failed", mod.name);
542 if (mod.mtabsize > 1)
543 qsort(mod.mtab, mod.mtabsize, sizeof(mod.mtab[0]),
546 _nsmod = vector_append(&mod, _nsmod, &_nsmodsize, sizeof(*_nsmod));
553 ns_mod_free(ns_mod *mod)
556 free(mod->name);
557 if (mod->handle == NULL)
559 if (mod->unregister != NULL)
560 mod->unregister(mod->mtab, mod->mtabsize);
561 if (mod->handle != nss_builtin_handle && !exiting)
562 (void)dlclose(mod->handle);
592 ns_mod *mod;
602 mod = vector_search(&source, _nsmod, _nsmodsize, sizeof(*_nsmod),
604 if (mod != NULL && mod->handle != NULL) {
607 match = bsearch(&key, mod->mtab, mod->mtabsize,
608 sizeof(mod->mtab[0]), mtab_compare);