changeset 3988:ab1a0a377851 HEAD

Added module_dir_deinit().
author Timo Sirainen <tss@iki.fi>
date Sun, 05 Feb 2006 16:14:12 +0200
parents 9099825aac9a
children e93e39326ae1
files src/lib/module-dir.c src/lib/module-dir.h
diffstat 2 files changed, 20 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib/module-dir.c	Sun Feb 05 15:33:23 2006 +0200
+++ b/src/lib/module-dir.c	Sun Feb 05 16:14:12 2006 +0200
@@ -187,6 +187,18 @@
 	return modules;
 }
 
+void module_dir_deinit(struct module *modules)
+{
+	struct module *module;
+
+	for (module = modules; module != NULL; module = module->next) {
+		if (module->deinit != NULL) {
+			module->deinit();
+			module->deinit = NULL;
+		}
+	}
+}
+
 void module_dir_unload(struct module **modules)
 {
 	struct module *module, *next;
@@ -208,7 +220,11 @@
 	return NULL;
 }
 
-void module_dir_unload(struct module *modules __attr_unused__)
+void module_dir_deinit(struct module *modules __attr_unused__)
+{
+}
+
+void module_dir_unload(struct module **modules __attr_unused__)
 {
 }
 
--- a/src/lib/module-dir.h	Sun Feb 05 15:33:23 2006 +0200
+++ b/src/lib/module-dir.h	Sun Feb 05 16:14:12 2006 +0200
@@ -12,6 +12,9 @@
 
 /* Load all modules in given directory. */
 struct module *module_dir_load(const char *dir, bool require_init_funcs);
+/* Call deinit() in all modules and mark them NULL so module_dir_unload()
+   won't do it again. */
+void module_dir_deinit(struct module *modules);
 /* Unload all modules */
 void module_dir_unload(struct module **modules);