Lines Matching refs:mod
274 _nsmodfree(ns_mod *mod)
277 free(__UNCONST(mod->name));
278 if (mod->handle == NULL)
280 if (mod->unregister != NULL)
281 (*mod->unregister)(mod->mtab, mod->mtabsize);
283 if (mod->handle != _nsbuiltin)
284 (void) dlclose(mod->handle);
299 ns_mod mod, *new;
301 memset(&mod, 0, sizeof(mod));
302 mod.name = strdup(source);
303 if (mod.name == NULL)
311 mod.handle = _nsbuiltin;
316 if (snprintf(buf, sizeof(buf), "nss_%s.so.%d", mod.name,
319 mod.handle = dlopen(buf, RTLD_LOCAL | RTLD_LAZY);
320 if (mod.handle == NULL) {
330 reg_fn = (nss_module_register_fn) dlsym(mod.handle,
333 (void) dlclose(mod.handle);
334 mod.handle = NULL;
339 mod.handle = NULL;
342 mod.mtab = (*reg_fn)(mod.name, &mod.mtabsize, &mod.unregister);
343 if (mod.mtab == NULL || mod.mtabsize == 0) {
345 if (mod.handle != _nsbuiltin)
346 (void) dlclose(mod.handle);
348 mod.handle = NULL;
352 if (mod.mtabsize > 1)
353 qsort(mod.mtab, mod.mtabsize, sizeof(mod.mtab[0]),
356 new = _nsvect_append(&mod, _nsmod, &_nsmodsize, sizeof(*_nsmod));
358 _nsmodfree(&mod);
379 const ns_mod *mod;
393 mod = bsearch(&modkey, _nsmod, _nsmodsize, sizeof(*_nsmod), _nsmodcmp);
394 if (mod == NULL)
558 ns_mod *mod, modkey;
571 mod = bsearch(&modkey, _nsmod, _nsmodsize, sizeof(*_nsmod),
573 if (mod != NULL && mod->handle != NULL) {
576 mtab = bsearch(&mtabkey, mod->mtab, mod->mtabsize,
577 sizeof(mod->mtab[0]), _nsmtabcmp);