in output.c [75:96]
void destroy_output_modules(void)
{
int i, ret;
void (*mod_exit)(void);
char path[PATH_MAX] = {0};
for (i = 0; i < nr_outputs; i++) {
if (dlinfo(output_dlhandles[i], RTLD_DI_ORIGIN, path))
strncpy(path, dlerror(), PATH_MAX - 1);
mod_exit = dlsym(output_dlhandles[i], "netconsd_output_exit");
if (mod_exit) {
log("Calling mod_exit() for '%s'\n", path);
mod_exit();
}
log("Unloading module '%s' (#%d@%p)\n", path, i, outputs[i]);
ret = dlclose(output_dlhandles[i]);
if (ret)
warn("dlclose() failed: %s\n", dlerror());
}
}