void destroy_output_modules()

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());
	}
}