libpurple/plugin.c

changeset 36054
501ed6c0631e
parent 35850
1abeda205d6c
child 36057
d94f3563172b
--- a/libpurple/plugin.c	Mon May 19 09:31:48 2014 +0200
+++ b/libpurple/plugin.c	Mon May 19 10:01:26 2014 +0200
@@ -184,12 +184,32 @@
 
 	plugin->native_plugin = native;
 	plugin->path = g_strdup(path);
+	plugin->extra_data = g_hash_table_new_full(g_str_hash, g_str_equal,
+		g_free, NULL);
 
 	PURPLE_DBUS_REGISTER_POINTER(plugin, PurplePlugin);
 
 	return plugin;
 }
 
+void
+purple_plugin_set_data(PurplePlugin *plugin, const gchar *key, gpointer value)
+{
+	g_return_if_fail(plugin != NULL);
+	g_return_if_fail(plugin->extra_data != NULL);
+
+	g_hash_table_insert(plugin->extra_data, g_strdup(key), value);
+}
+
+gpointer
+purple_plugin_get_data(PurplePlugin *plugin, const gchar *key)
+{
+	g_return_val_if_fail(plugin != NULL, NULL);
+	g_return_val_if_fail(plugin->extra_data != NULL, NULL);
+
+	return g_hash_table_lookup(plugin->extra_data, key);
+}
+
 PurplePlugin *
 purple_plugin_probe(const char *filename)
 {
@@ -876,6 +896,7 @@
 
 	g_free(plugin->path);
 	g_free(plugin->error);
+	g_hash_table_destroy(plugin->extra_data);
 
 	PURPLE_DBUS_UNREGISTER_POINTER(plugin);
 

mercurial