diff src/plugin.c @ 5838:6aa7651c7c15

[gaim-migrate @ 6269] regain the ability to remember what plugins we had loaded committer: Tailor Script <tailor@pidgin.im>
author Nathan Walp <nwalp@pidgin.im>
date Thu, 12 Jun 2003 05:01:11 +0000
parents 5e93fc46d1af
children 8f5ccf9e590a
line wrap: on
line diff
--- a/src/plugin.c	Thu Jun 12 04:20:08 2003 +0000
+++ b/src/plugin.c	Thu Jun 12 05:01:11 2003 +0000
@@ -144,6 +144,26 @@
 
 #endif /* GAIM_PLUGINS */
 
+static void
+update_plugin_prefs(void)
+{
+	GList *pl;
+	GList *files = NULL;
+	GaimPlugin *p;
+
+	for (pl = gaim_plugins_get_loaded(); pl != NULL; pl = pl->next) {
+		p = pl->data;
+
+		if(p->info->type != GAIM_PLUGIN_PROTOCOL &&
+				p->info->type != GAIM_PLUGIN_LOADER) {
+			files = g_list_append(files, p->path);
+		}
+	}
+
+	gaim_prefs_set_string_list("/plugins/loaded", files);
+	g_list_free(files);
+}
+
 static gint
 compare_prpl(GaimPlugin *a, GaimPlugin *b)
 {
@@ -290,6 +310,7 @@
 	}
 
 	loaded_plugins = g_list_append(loaded_plugins, plugin);
+	update_plugin_prefs();
 
 	plugin->loaded = TRUE;
 
@@ -311,6 +332,7 @@
 	g_return_val_if_fail(plugin != NULL, FALSE);
 
 	loaded_plugins = g_list_remove(loaded_plugins, plugin);
+	update_plugin_prefs();
 
 	g_return_val_if_fail(gaim_plugin_is_loaded(plugin), FALSE);
 
@@ -523,6 +545,23 @@
 
 #endif /* GAIM_PLUGINS */
 }
+
+void
+gaim_plugins_load_all(void)
+{
+#ifdef GAIM_PLUGINS
+	GList *f, *files = gaim_prefs_get_string_list("/plugins/loaded");
+
+	for(f = files; f; f = f->next) {
+		gaim_plugin_load(gaim_plugin_probe(f->data));
+		g_free(f->data);
+	}
+
+	g_list_free(files);
+#endif /* GAIM_PLUGINS */
+}
+
+
 void
 gaim_plugins_probe(const char *ext)
 {