libpurple/plugins.c

Tue, 19 Mar 2024 00:53:11 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Tue, 19 Mar 2024 00:53:11 -0500
changeset 42646
b82b5609c044
parent 42638
81ef32d85e5a
child 42834
8c7bd2b5757e
permissions
-rw-r--r--

Use PurpleProtocol.can_connect_async in the login process

Also implement it for all the new protocol plugins.

Testing Done:
Attempted connections for the new bonjour, ircv3, and new xmpp accounts and verified them made it past the checks.
Attempted and ircv3 account with a bad DNS name and verified it failed in the `can_reach_async` functions.
Also ran with the turtles.

Reviewed at https://reviews.imfreedom.org/r/3005/

5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1 /*
42594
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42557
diff changeset
2 * Purple - Internet Messaging Library
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42557
diff changeset
3 * Copyright (C) Pidgin Developers <devel@pidgin.im>
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15523
diff changeset
5 * Purple is the legal property of its developers, whose names are too numerous
42594
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42557
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
8046
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 7956
diff changeset
7 * source distribution.
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
8 *
42594
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42557
diff changeset
9 * This library is free software; you can redistribute it and/or modify it
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42557
diff changeset
10 * under the terms of the GNU General Public License as published by the Free
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42557
diff changeset
11 * Software Foundation; either version 2 of the License, or (at your option)
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42557
diff changeset
12 * any later version.
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
13 *
42594
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42557
diff changeset
14 * This library is distributed in the hope that it will be useful, but WITHOUT
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42557
diff changeset
15 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42557
diff changeset
16 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42557
diff changeset
17 * more details.
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
18 *
42594
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42557
diff changeset
19 * You should have received a copy of the GNU General Public License along with
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42557
diff changeset
20 * this library; if not, see <https://www.gnu.org/licenses/>.
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
21 */
40441
f23c7e772667 Make sure we're not including the gettext macros in header files and deal with the repercussions of that.
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
22
42410
563e7a17c220 Fix possible clash of config headers
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42193
diff changeset
23 #include <purpleconfig.h>
40441
f23c7e772667 Make sure we're not including the gettext macros in header files and deal with the repercussions of that.
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
24
42410
563e7a17c220 Fix possible clash of config headers
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42193
diff changeset
25 #include <glib/gi18n-lib.h>
36372
5a1fe926f37b Fixed build errors for plugins.c, and used gplugin_plugin_manager_free_plugin_list()
Ankit Vani <a@nevitus.org>
parents: 36370
diff changeset
26
36412
b57d4ad74b55 Added purple_plugin_info_is_loadable(), UI requirement, error and PURPLE_ABI_VERSION_* macros
Ankit Vani <a@nevitus.org>
parents: 36402
diff changeset
27 #include "core.h"
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
28 #include "debug.h"
42557
e868bfcc092a Only include headers when they're necessary for header files
Gary Kramlich <grim@reaperworld.com>
parents: 42440
diff changeset
29 #include "notify.h"
36367
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
30 #include "plugins.h"
42557
e868bfcc092a Only include headers when they're necessary for header files
Gary Kramlich <grim@reaperworld.com>
parents: 42440
diff changeset
31 #include "prefs.h"
41007
90d2dee9b3dc Fix the includes for the purpleenums rename
Gary Kramlich <grim@reaperworld.com>
parents: 40978
diff changeset
32 #include "purpleenums.h"
42193
9a7a47cdd0ba Add notifications when a saved plugin fails to load
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
33 #include "purplenotification.h"
9a7a47cdd0ba Add notifications when a saved plugin fails to load
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
34 #include "purplenotificationmanager.h"
40439
e9838d634d5e Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents: 40310
diff changeset
35 #include "signals.h"
e9838d634d5e Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents: 40310
diff changeset
36 #include "util.h"
41877
11e7400101d2 Fix libpurple compile on Windows
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41685
diff changeset
37 #ifdef _WIN32
11e7400101d2 Fix libpurple compile on Windows
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41685
diff changeset
38 #include "win32/win32dep.h"
11e7400101d2 Fix libpurple compile on Windows
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41685
diff changeset
39 #endif
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
40
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
41 /**************************************************************************
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
42 * Globals
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
43 **************************************************************************/
36397
4ae45b445bb9 Added purple_plugin_disable()
Ankit Vani <a@nevitus.org>
parents: 36396
diff changeset
44 static GList *loaded_plugins = NULL;
4ae45b445bb9 Added purple_plugin_disable()
Ankit Vani <a@nevitus.org>
parents: 36396
diff changeset
45 static GList *plugins_to_disable = NULL;
10682
c293ad49121e [gaim-migrate @ 12228]
Richard Laager <rlaager@pidgin.im>
parents: 10504
diff changeset
46
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
47 /**************************************************************************
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
48 * Plugin API
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
49 **************************************************************************/
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
50 static gboolean
41960
c8a4853205e3 Bump C standard to C99 for libpurple files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41877
diff changeset
51 plugin_loading_cb(G_GNUC_UNUSED GObject *manager, PurplePlugin *plugin,
c8a4853205e3 Bump C standard to C99 for libpurple files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41877
diff changeset
52 GError **error, G_GNUC_UNUSED gpointer data)
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
53 {
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
54 PurplePluginInfo *info;
40963
f2abd04191b7 Split PurplePluginInfo out to its own file
Gary Kramlich <grim@reaperworld.com>
parents: 40945
diff changeset
55 const gchar *info_error = NULL;
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
56
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
57 g_return_val_if_fail(PURPLE_IS_PLUGIN(plugin), FALSE);
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
58
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
59 info = purple_plugin_get_info(plugin);
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
60 if (!info)
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
61 return TRUE; /* a GPlugin internal plugin */
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
62
40963
f2abd04191b7 Split PurplePluginInfo out to its own file
Gary Kramlich <grim@reaperworld.com>
parents: 40945
diff changeset
63 info_error = purple_plugin_info_get_error(info);
f2abd04191b7 Split PurplePluginInfo out to its own file
Gary Kramlich <grim@reaperworld.com>
parents: 40945
diff changeset
64 if(info_error != NULL) {
40264
d253f767f6cc fix various memory leaks
Fabrice Bellet <fabrice@bellet.info>
parents: 39894
diff changeset
65 gchar *filename = gplugin_plugin_get_filename(plugin);
36511
1ebd4a8f2b4a Removed purple_plugin_is_loadable() and purple_plugin_get_error() from the API
Ankit Vani <a@nevitus.org>
parents: 36508
diff changeset
66 purple_debug_error("plugins", "Failed to load plugin %s: %s",
40264
d253f767f6cc fix various memory leaks
Fabrice Bellet <fabrice@bellet.info>
parents: 39894
diff changeset
67 filename,
40963
f2abd04191b7 Split PurplePluginInfo out to its own file
Gary Kramlich <grim@reaperworld.com>
parents: 40945
diff changeset
68 info_error);
36511
1ebd4a8f2b4a Removed purple_plugin_is_loadable() and purple_plugin_get_error() from the API
Ankit Vani <a@nevitus.org>
parents: 36508
diff changeset
69
1ebd4a8f2b4a Removed purple_plugin_is_loadable() and purple_plugin_get_error() from the API
Ankit Vani <a@nevitus.org>
parents: 36508
diff changeset
70 g_set_error(error, PURPLE_PLUGINS_DOMAIN, 0,
40963
f2abd04191b7 Split PurplePluginInfo out to its own file
Gary Kramlich <grim@reaperworld.com>
parents: 40945
diff changeset
71 "Plugin is not loadable: %s", info_error);
36508
88400e054286 Return a GError if load or unload fails
Ankit Vani <a@nevitus.org>
parents: 36507
diff changeset
72
40264
d253f767f6cc fix various memory leaks
Fabrice Bellet <fabrice@bellet.info>
parents: 39894
diff changeset
73 g_free(filename);
36431
ea007725fd4d Refactored the codebase to use the plugin wrapper functions
Ankit Vani <a@nevitus.org>
parents: 36429
diff changeset
74 return FALSE;
36456
380500e9aff2 Fixed the type of pref used to store loaded plugins, and added some debug messages
Ankit Vani <a@nevitus.org>
parents: 36450
diff changeset
75 }
36412
b57d4ad74b55 Added purple_plugin_info_is_loadable(), UI requirement, error and PURPLE_ABI_VERSION_* macros
Ankit Vani <a@nevitus.org>
parents: 36402
diff changeset
76
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
77 return TRUE;
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
78 }
36508
88400e054286 Return a GError if load or unload fails
Ankit Vani <a@nevitus.org>
parents: 36507
diff changeset
79
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
80 static void
41960
c8a4853205e3 Bump C standard to C99 for libpurple files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41877
diff changeset
81 plugin_loaded_cb(G_GNUC_UNUSED GObject *manager, PurplePlugin *plugin)
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
82 {
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
83 PurplePluginInfo *info;
40264
d253f767f6cc fix various memory leaks
Fabrice Bellet <fabrice@bellet.info>
parents: 39894
diff changeset
84 gchar *filename;
36508
88400e054286 Return a GError if load or unload fails
Ankit Vani <a@nevitus.org>
parents: 36507
diff changeset
85
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
86 g_return_if_fail(PURPLE_IS_PLUGIN(plugin));
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
87
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
88 info = purple_plugin_get_info(plugin);
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
89 if (!info)
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
90 return; /* a GPlugin internal plugin */
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
91
37008
9dca610b3bf2 Prepend newly-loaded plugins to the loaded list
Ankit Vani <a@nevitus.org>
parents: 37001
diff changeset
92 loaded_plugins = g_list_prepend(loaded_plugins, plugin);
40264
d253f767f6cc fix various memory leaks
Fabrice Bellet <fabrice@bellet.info>
parents: 39894
diff changeset
93 filename = gplugin_plugin_get_filename(plugin);
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
94
40264
d253f767f6cc fix various memory leaks
Fabrice Bellet <fabrice@bellet.info>
parents: 39894
diff changeset
95 purple_debug_info("plugins", "Loaded plugin %s\n", filename);
36456
380500e9aff2 Fixed the type of pref used to store loaded plugins, and added some debug messages
Ankit Vani <a@nevitus.org>
parents: 36450
diff changeset
96
40264
d253f767f6cc fix various memory leaks
Fabrice Bellet <fabrice@bellet.info>
parents: 39894
diff changeset
97 g_free(filename);
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
98 }
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
99
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
100 static gboolean
41960
c8a4853205e3 Bump C standard to C99 for libpurple files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41877
diff changeset
101 plugin_unloading_cb(G_GNUC_UNUSED GObject *manager, PurplePlugin *plugin,
c8a4853205e3 Bump C standard to C99 for libpurple files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41877
diff changeset
102 G_GNUC_UNUSED GError **error, G_GNUC_UNUSED gpointer data)
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
103 {
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
104 PurplePluginInfo *info;
40264
d253f767f6cc fix various memory leaks
Fabrice Bellet <fabrice@bellet.info>
parents: 39894
diff changeset
105 gchar *filename;
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
106
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
107 g_return_val_if_fail(PURPLE_IS_PLUGIN(plugin), FALSE);
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
108
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
109 info = purple_plugin_get_info(plugin);
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
110 if (info) {
40264
d253f767f6cc fix various memory leaks
Fabrice Bellet <fabrice@bellet.info>
parents: 39894
diff changeset
111 filename = gplugin_plugin_get_filename(plugin);
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
112 purple_debug_info("plugins", "Unloading plugin %s\n",
40264
d253f767f6cc fix various memory leaks
Fabrice Bellet <fabrice@bellet.info>
parents: 39894
diff changeset
113 filename);
d253f767f6cc fix various memory leaks
Fabrice Bellet <fabrice@bellet.info>
parents: 39894
diff changeset
114 g_free(filename);
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
115 }
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
116
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
117 return TRUE;
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
118 }
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
119
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
120 static void
41960
c8a4853205e3 Bump C standard to C99 for libpurple files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41877
diff changeset
121 plugin_unloaded_cb(G_GNUC_UNUSED GObject *manager, PurplePlugin *plugin)
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
122 {
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
123 PurplePluginInfo *info;
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
124
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
125 g_return_if_fail(PURPLE_IS_PLUGIN(plugin));
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
126
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
127 info = purple_plugin_get_info(plugin);
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
128 if (!info)
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
129 return; /* a GPlugin internal plugin */
36508
88400e054286 Return a GError if load or unload fails
Ankit Vani <a@nevitus.org>
parents: 36507
diff changeset
130
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
131 /* cancel any pending dialogs the plugin has */
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
132 purple_request_close_with_handle(plugin);
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
133 purple_notify_close_with_handle(plugin);
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
134
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
135 purple_signals_disconnect_by_handle(plugin);
36527
016e4be6f3da Unregister signals on plugin unload and protocol removal
Ankit Vani <a@nevitus.org>
parents: 36515
diff changeset
136 purple_signals_unregister_by_instance(plugin);
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
137
40963
f2abd04191b7 Split PurplePluginInfo out to its own file
Gary Kramlich <grim@reaperworld.com>
parents: 40945
diff changeset
138 purple_plugin_info_set_unloaded(info, TRUE);
36469
304912384a5c Free actions on plugin unload, and updated documentation
Ankit Vani <a@nevitus.org>
parents: 36468
diff changeset
139
36397
4ae45b445bb9 Added purple_plugin_disable()
Ankit Vani <a@nevitus.org>
parents: 36396
diff changeset
140 loaded_plugins = g_list_remove(loaded_plugins, plugin);
4ae45b445bb9 Added purple_plugin_disable()
Ankit Vani <a@nevitus.org>
parents: 36396
diff changeset
141 plugins_to_disable = g_list_remove(plugins_to_disable, plugin);
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
142
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
143 purple_prefs_disconnect_by_handle(plugin);
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
144 }
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
145
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
146 gboolean
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
147 purple_plugin_load(PurplePlugin *plugin, GError **error)
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
148 {
41008
dc06703548a1 Update everything for GPlugin 0.33.0
Gary Kramlich <grim@reaperworld.com>
parents: 41007
diff changeset
149 GPluginManager *manager = NULL;
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
150 GError *err = NULL;
40264
d253f767f6cc fix various memory leaks
Fabrice Bellet <fabrice@bellet.info>
parents: 39894
diff changeset
151 gchar *filename;
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
152
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
153 g_return_val_if_fail(plugin != NULL, FALSE);
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
154
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
155 if (purple_plugin_is_loaded(plugin))
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
156 return TRUE;
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
157
41008
dc06703548a1 Update everything for GPlugin 0.33.0
Gary Kramlich <grim@reaperworld.com>
parents: 41007
diff changeset
158 manager = gplugin_manager_get_default();
dc06703548a1 Update everything for GPlugin 0.33.0
Gary Kramlich <grim@reaperworld.com>
parents: 41007
diff changeset
159
dc06703548a1 Update everything for GPlugin 0.33.0
Gary Kramlich <grim@reaperworld.com>
parents: 41007
diff changeset
160 if (!gplugin_manager_load_plugin(manager, plugin, &err)) {
dc06703548a1 Update everything for GPlugin 0.33.0
Gary Kramlich <grim@reaperworld.com>
parents: 41007
diff changeset
161 filename = gplugin_plugin_get_filename(plugin);
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
162 purple_debug_error("plugins", "Failed to load plugin %s: %s",
40264
d253f767f6cc fix various memory leaks
Fabrice Bellet <fabrice@bellet.info>
parents: 39894
diff changeset
163 filename,
39835
c28a375781dd Remove purple_plugin_get_filename wrapper as well.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39834
diff changeset
164 err ? err->message : "Unknown reason");
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
165
41008
dc06703548a1 Update everything for GPlugin 0.33.0
Gary Kramlich <grim@reaperworld.com>
parents: 41007
diff changeset
166 g_propagate_error(error, err);
dc06703548a1 Update everything for GPlugin 0.33.0
Gary Kramlich <grim@reaperworld.com>
parents: 41007
diff changeset
167
40264
d253f767f6cc fix various memory leaks
Fabrice Bellet <fabrice@bellet.info>
parents: 39894
diff changeset
168 g_free(filename);
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
169 return FALSE;
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
170 }
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
171
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
172 return TRUE;
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
173 }
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
174
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
175 gboolean
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
176 purple_plugin_unload(PurplePlugin *plugin, GError **error)
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
177 {
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
178 GError *err = NULL;
40264
d253f767f6cc fix various memory leaks
Fabrice Bellet <fabrice@bellet.info>
parents: 39894
diff changeset
179 gchar *filename;
41008
dc06703548a1 Update everything for GPlugin 0.33.0
Gary Kramlich <grim@reaperworld.com>
parents: 41007
diff changeset
180 GPluginManager *manager = NULL;
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
181
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
182 g_return_val_if_fail(plugin != NULL, FALSE);
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
183
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
184 if (!purple_plugin_is_loaded(plugin))
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
185 return TRUE;
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
186
41008
dc06703548a1 Update everything for GPlugin 0.33.0
Gary Kramlich <grim@reaperworld.com>
parents: 41007
diff changeset
187 manager = gplugin_manager_get_default();
dc06703548a1 Update everything for GPlugin 0.33.0
Gary Kramlich <grim@reaperworld.com>
parents: 41007
diff changeset
188
dc06703548a1 Update everything for GPlugin 0.33.0
Gary Kramlich <grim@reaperworld.com>
parents: 41007
diff changeset
189 if (!gplugin_manager_unload_plugin(manager, plugin, &err)) {
dc06703548a1 Update everything for GPlugin 0.33.0
Gary Kramlich <grim@reaperworld.com>
parents: 41007
diff changeset
190 filename = gplugin_plugin_get_filename(plugin);
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
191 purple_debug_error("plugins", "Failed to unload plugin %s: %s",
40264
d253f767f6cc fix various memory leaks
Fabrice Bellet <fabrice@bellet.info>
parents: 39894
diff changeset
192 filename,
39835
c28a375781dd Remove purple_plugin_get_filename wrapper as well.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39834
diff changeset
193 err ? err->message : "Unknown reason");
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
194
41008
dc06703548a1 Update everything for GPlugin 0.33.0
Gary Kramlich <grim@reaperworld.com>
parents: 41007
diff changeset
195 g_propagate_error(error, err);
dc06703548a1 Update everything for GPlugin 0.33.0
Gary Kramlich <grim@reaperworld.com>
parents: 41007
diff changeset
196
40264
d253f767f6cc fix various memory leaks
Fabrice Bellet <fabrice@bellet.info>
parents: 39894
diff changeset
197 g_free(filename);
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
198
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
199 return FALSE;
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
200 }
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
201
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
202 return TRUE;
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
203 }
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
204
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
205 gboolean
39420
92213bd9538b plugins: Drop consts from arguments to mirror new GPlugin 0.28 API
Mike Ruprecht <cmaiku@gmail.com>
parents: 39419
diff changeset
206 purple_plugin_is_loaded(PurplePlugin *plugin)
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
207 {
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
208 g_return_val_if_fail(plugin != NULL, FALSE);
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
209
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
210 return (gplugin_plugin_get_state(plugin) == GPLUGIN_PLUGIN_STATE_LOADED);
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
211 }
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
212
36429
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
213 PurplePluginInfo *
39420
92213bd9538b plugins: Drop consts from arguments to mirror new GPlugin 0.28 API
Mike Ruprecht <cmaiku@gmail.com>
parents: 39419
diff changeset
214 purple_plugin_get_info(PurplePlugin *plugin)
36429
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
215 {
36432
2de90f1d0c15 Added some checks
Ankit Vani <a@nevitus.org>
parents: 36431
diff changeset
216 GPluginPluginInfo *info;
2de90f1d0c15 Added some checks
Ankit Vani <a@nevitus.org>
parents: 36431
diff changeset
217
2de90f1d0c15 Added some checks
Ankit Vani <a@nevitus.org>
parents: 36431
diff changeset
218 g_return_val_if_fail(plugin != NULL, NULL);
2de90f1d0c15 Added some checks
Ankit Vani <a@nevitus.org>
parents: 36431
diff changeset
219
2de90f1d0c15 Added some checks
Ankit Vani <a@nevitus.org>
parents: 36431
diff changeset
220 info = gplugin_plugin_get_info(plugin);
36990
b1471cc401a4 Document the g_object_unref before returning a plugin info or a plugin instance
Ankit Vani <a@nevitus.org>
parents: 36986
diff changeset
221
b1471cc401a4 Document the g_object_unref before returning a plugin info or a plugin instance
Ankit Vani <a@nevitus.org>
parents: 36986
diff changeset
222 /* GPlugin refs the plugin info object before returning it. This workaround
b1471cc401a4 Document the g_object_unref before returning a plugin info or a plugin instance
Ankit Vani <a@nevitus.org>
parents: 36986
diff changeset
223 * is to avoid managing the reference counts everywhere in our codebase
37001
e94e70e965e3 Better wording for comments in plugins.c
Ankit Vani <a@nevitus.org>
parents: 36990
diff changeset
224 * where we use the plugin info. The plugin info instance is guaranteed to
e94e70e965e3 Better wording for comments in plugins.c
Ankit Vani <a@nevitus.org>
parents: 36990
diff changeset
225 * exist as long as the plugin exists. */
36431
ea007725fd4d Refactored the codebase to use the plugin wrapper functions
Ankit Vani <a@nevitus.org>
parents: 36429
diff changeset
226 g_object_unref(info);
ea007725fd4d Refactored the codebase to use the plugin wrapper functions
Ankit Vani <a@nevitus.org>
parents: 36429
diff changeset
227
36654
61014b39bac3 Removed an unnecessary call to gplugin
Ankit Vani <a@nevitus.org>
parents: 36653
diff changeset
228 if (PURPLE_IS_PLUGIN_INFO(info))
61014b39bac3 Removed an unnecessary call to gplugin
Ankit Vani <a@nevitus.org>
parents: 36653
diff changeset
229 return PURPLE_PLUGIN_INFO(info);
61014b39bac3 Removed an unnecessary call to gplugin
Ankit Vani <a@nevitus.org>
parents: 36653
diff changeset
230 else
61014b39bac3 Removed an unnecessary call to gplugin
Ankit Vani <a@nevitus.org>
parents: 36653
diff changeset
231 return NULL;
36429
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
232 }
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
233
36396
add1d5e2314c Renamed actions_add functions to add_action functions
Ankit Vani <a@nevitus.org>
parents: 36395
diff changeset
234 void
36439
7f8921ef1bfc Moved PurplePluginInfo's get_actions(), is_loadable(), get_error(), get_dependent_plugins() API to PurplePlugin
Ankit Vani <a@nevitus.org>
parents: 36437
diff changeset
235 purple_plugin_disable(PurplePlugin *plugin)
7f8921ef1bfc Moved PurplePluginInfo's get_actions(), is_loadable(), get_error(), get_dependent_plugins() API to PurplePlugin
Ankit Vani <a@nevitus.org>
parents: 36437
diff changeset
236 {
7f8921ef1bfc Moved PurplePluginInfo's get_actions(), is_loadable(), get_error(), get_dependent_plugins() API to PurplePlugin
Ankit Vani <a@nevitus.org>
parents: 36437
diff changeset
237 g_return_if_fail(plugin != NULL);
7f8921ef1bfc Moved PurplePluginInfo's get_actions(), is_loadable(), get_error(), get_dependent_plugins() API to PurplePlugin
Ankit Vani <a@nevitus.org>
parents: 36437
diff changeset
238
7f8921ef1bfc Moved PurplePluginInfo's get_actions(), is_loadable(), get_error(), get_dependent_plugins() API to PurplePlugin
Ankit Vani <a@nevitus.org>
parents: 36437
diff changeset
239 if (!g_list_find(plugins_to_disable, plugin))
7f8921ef1bfc Moved PurplePluginInfo's get_actions(), is_loadable(), get_error(), get_dependent_plugins() API to PurplePlugin
Ankit Vani <a@nevitus.org>
parents: 36437
diff changeset
240 plugins_to_disable = g_list_prepend(plugins_to_disable, plugin);
7f8921ef1bfc Moved PurplePluginInfo's get_actions(), is_loadable(), get_error(), get_dependent_plugins() API to PurplePlugin
Ankit Vani <a@nevitus.org>
parents: 36437
diff changeset
241 }
7f8921ef1bfc Moved PurplePluginInfo's get_actions(), is_loadable(), get_error(), get_dependent_plugins() API to PurplePlugin
Ankit Vani <a@nevitus.org>
parents: 36437
diff changeset
242
7f8921ef1bfc Moved PurplePluginInfo's get_actions(), is_loadable(), get_error(), get_dependent_plugins() API to PurplePlugin
Ankit Vani <a@nevitus.org>
parents: 36437
diff changeset
243 gboolean
39420
92213bd9538b plugins: Drop consts from arguments to mirror new GPlugin 0.28 API
Mike Ruprecht <cmaiku@gmail.com>
parents: 39419
diff changeset
244 purple_plugin_is_internal(PurplePlugin *plugin)
36467
52aa83c47311 Replaced purple_plugin_loads_on_query() with purple_plugin_is_internal().
Ankit Vani <a@nevitus.org>
parents: 36463
diff changeset
245 {
36653
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
246 PurplePluginInfo *info;
36467
52aa83c47311 Replaced purple_plugin_loads_on_query() with purple_plugin_is_internal().
Ankit Vani <a@nevitus.org>
parents: 36463
diff changeset
247
52aa83c47311 Replaced purple_plugin_loads_on_query() with purple_plugin_is_internal().
Ankit Vani <a@nevitus.org>
parents: 36463
diff changeset
248 g_return_val_if_fail(plugin != NULL, FALSE);
52aa83c47311 Replaced purple_plugin_loads_on_query() with purple_plugin_is_internal().
Ankit Vani <a@nevitus.org>
parents: 36463
diff changeset
249
36653
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
250 info = purple_plugin_get_info(plugin);
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
251 if (!info)
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
252 return TRUE;
36472
1945ae79bbb3 Added checks in case a plugin does not return a PluginInfo
Ankit Vani <a@nevitus.org>
parents: 36469
diff changeset
253
36654
61014b39bac3 Removed an unnecessary call to gplugin
Ankit Vani <a@nevitus.org>
parents: 36653
diff changeset
254 return (purple_plugin_info_get_flags(info) &
61014b39bac3 Removed an unnecessary call to gplugin
Ankit Vani <a@nevitus.org>
parents: 36653
diff changeset
255 PURPLE_PLUGIN_INFO_FLAGS_INTERNAL);
36467
52aa83c47311 Replaced purple_plugin_loads_on_query() with purple_plugin_is_internal().
Ankit Vani <a@nevitus.org>
parents: 36463
diff changeset
256 }
52aa83c47311 Replaced purple_plugin_loads_on_query() with purple_plugin_is_internal().
Ankit Vani <a@nevitus.org>
parents: 36463
diff changeset
257
36439
7f8921ef1bfc Moved PurplePluginInfo's get_actions(), is_loadable(), get_error(), get_dependent_plugins() API to PurplePlugin
Ankit Vani <a@nevitus.org>
parents: 36437
diff changeset
258 GSList *
41960
c8a4853205e3 Bump C standard to C99 for libpurple files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41877
diff changeset
259 purple_plugin_get_dependent_plugins(G_GNUC_UNUSED PurplePlugin *plugin)
36439
7f8921ef1bfc Moved PurplePluginInfo's get_actions(), is_loadable(), get_error(), get_dependent_plugins() API to PurplePlugin
Ankit Vani <a@nevitus.org>
parents: 36437
diff changeset
260 {
42440
0459fca48457 Change #warning to #pragma message
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42410
diff changeset
261 #pragma message("TODO: Implement this when GPlugin can return dependent plugins.")
36439
7f8921ef1bfc Moved PurplePluginInfo's get_actions(), is_loadable(), get_error(), get_dependent_plugins() API to PurplePlugin
Ankit Vani <a@nevitus.org>
parents: 36437
diff changeset
262 return NULL;
36397
4ae45b445bb9 Added purple_plugin_disable()
Ankit Vani <a@nevitus.org>
parents: 36396
diff changeset
263 }
4ae45b445bb9 Added purple_plugin_disable()
Ankit Vani <a@nevitus.org>
parents: 36396
diff changeset
264
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
265 /**************************************************************************
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
266 * Plugins API
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
267 **************************************************************************/
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
268 GList *
36400
2ccd829171ec Renamed purple_plugins_get_all() to purple_plugins_find_all() since the list is generated.
Ankit Vani <a@nevitus.org>
parents: 36399
diff changeset
269 purple_plugins_find_all(void)
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
270 {
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
271 GList *ret = NULL, *ids, *l;
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
272 GSList *plugins, *ll;
41008
dc06703548a1 Update everything for GPlugin 0.33.0
Gary Kramlich <grim@reaperworld.com>
parents: 41007
diff changeset
273 GPluginManager *manager = gplugin_manager_get_default();
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
274
41008
dc06703548a1 Update everything for GPlugin 0.33.0
Gary Kramlich <grim@reaperworld.com>
parents: 41007
diff changeset
275 ids = gplugin_manager_list_plugins(manager);
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
276
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
277 for (l = ids; l; l = l->next) {
41008
dc06703548a1 Update everything for GPlugin 0.33.0
Gary Kramlich <grim@reaperworld.com>
parents: 41007
diff changeset
278 plugins = gplugin_manager_find_plugins(manager, l->data);
36806
c55849ed482d Make sure purple_plugins_find_all() returns only purple plugins
Ankit Vani <a@nevitus.org>
parents: 36782
diff changeset
279
c55849ed482d Make sure purple_plugins_find_all() returns only purple plugins
Ankit Vani <a@nevitus.org>
parents: 36782
diff changeset
280 for (ll = plugins; ll; ll = ll->next) {
c55849ed482d Make sure purple_plugins_find_all() returns only purple plugins
Ankit Vani <a@nevitus.org>
parents: 36782
diff changeset
281 PurplePlugin *plugin = PURPLE_PLUGIN(ll->data);
c55849ed482d Make sure purple_plugins_find_all() returns only purple plugins
Ankit Vani <a@nevitus.org>
parents: 36782
diff changeset
282 if (purple_plugin_get_info(plugin))
c55849ed482d Make sure purple_plugins_find_all() returns only purple plugins
Ankit Vani <a@nevitus.org>
parents: 36782
diff changeset
283 ret = g_list_append(ret, plugin);
c55849ed482d Make sure purple_plugins_find_all() returns only purple plugins
Ankit Vani <a@nevitus.org>
parents: 36782
diff changeset
284 }
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
285
40310
d981cc89bf37 gplugin_manager_free_plugin_list was removed in favor of g_slist_free_full
Gary Kramlich <grim@reaperworld.com>
parents: 40264
diff changeset
286 g_slist_free_full(plugins, g_object_unref);
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
287 }
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
288 g_list_free(ids);
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
289
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
290 return ret;
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
291 }
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
292
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
293 GList *
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
294 purple_plugins_get_loaded(void)
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
295 {
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
296 return loaded_plugins;
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
297 }
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
298
36429
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
299 void
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
300 purple_plugins_add_search_path(const gchar *path)
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
301 {
41008
dc06703548a1 Update everything for GPlugin 0.33.0
Gary Kramlich <grim@reaperworld.com>
parents: 41007
diff changeset
302 GPluginManager *manager = gplugin_manager_get_default();
dc06703548a1 Update everything for GPlugin 0.33.0
Gary Kramlich <grim@reaperworld.com>
parents: 41007
diff changeset
303
dc06703548a1 Update everything for GPlugin 0.33.0
Gary Kramlich <grim@reaperworld.com>
parents: 41007
diff changeset
304 gplugin_manager_append_path(manager, path);
36429
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
305 }
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
306
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
307 void
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
308 purple_plugins_refresh(void)
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
309 {
36463
b1ce7f2998e4 Added purple_plugin_loads_on_query()
Ankit Vani <a@nevitus.org>
parents: 36460
diff changeset
310 GList *plugins, *l;
41008
dc06703548a1 Update everything for GPlugin 0.33.0
Gary Kramlich <grim@reaperworld.com>
parents: 41007
diff changeset
311 GPluginManager *manager = gplugin_manager_get_default();
36463
b1ce7f2998e4 Added purple_plugin_loads_on_query()
Ankit Vani <a@nevitus.org>
parents: 36460
diff changeset
312
41008
dc06703548a1 Update everything for GPlugin 0.33.0
Gary Kramlich <grim@reaperworld.com>
parents: 41007
diff changeset
313 gplugin_manager_refresh(manager);
36463
b1ce7f2998e4 Added purple_plugin_loads_on_query()
Ankit Vani <a@nevitus.org>
parents: 36460
diff changeset
314
b1ce7f2998e4 Added purple_plugin_loads_on_query()
Ankit Vani <a@nevitus.org>
parents: 36460
diff changeset
315 plugins = purple_plugins_find_all();
b1ce7f2998e4 Added purple_plugin_loads_on_query()
Ankit Vani <a@nevitus.org>
parents: 36460
diff changeset
316 for (l = plugins; l != NULL; l = l->next) {
b1ce7f2998e4 Added purple_plugin_loads_on_query()
Ankit Vani <a@nevitus.org>
parents: 36460
diff changeset
317 PurplePlugin *plugin = PURPLE_PLUGIN(l->data);
36653
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
318 PurplePluginInfo *info;
40963
f2abd04191b7 Split PurplePluginInfo out to its own file
Gary Kramlich <grim@reaperworld.com>
parents: 40945
diff changeset
319 PurplePluginInfoFlags flags;
f2abd04191b7 Split PurplePluginInfo out to its own file
Gary Kramlich <grim@reaperworld.com>
parents: 40945
diff changeset
320 gboolean unloaded;
36474
e4f3c025cb62 Do not auto-load load-on-query plugins that have been unloaded once
Ankit Vani <a@nevitus.org>
parents: 36472
diff changeset
321
36463
b1ce7f2998e4 Added purple_plugin_loads_on_query()
Ankit Vani <a@nevitus.org>
parents: 36460
diff changeset
322 if (purple_plugin_is_loaded(plugin))
b1ce7f2998e4 Added purple_plugin_loads_on_query()
Ankit Vani <a@nevitus.org>
parents: 36460
diff changeset
323 continue;
b1ce7f2998e4 Added purple_plugin_loads_on_query()
Ankit Vani <a@nevitus.org>
parents: 36460
diff changeset
324
36653
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
325 info = purple_plugin_get_info(plugin);
36474
e4f3c025cb62 Do not auto-load load-on-query plugins that have been unloaded once
Ankit Vani <a@nevitus.org>
parents: 36472
diff changeset
326
40963
f2abd04191b7 Split PurplePluginInfo out to its own file
Gary Kramlich <grim@reaperworld.com>
parents: 40945
diff changeset
327 unloaded = purple_plugin_info_get_unloaded(info);
f2abd04191b7 Split PurplePluginInfo out to its own file
Gary Kramlich <grim@reaperworld.com>
parents: 40945
diff changeset
328 flags = purple_plugin_info_get_flags(info);
f2abd04191b7 Split PurplePluginInfo out to its own file
Gary Kramlich <grim@reaperworld.com>
parents: 40945
diff changeset
329 if (!unloaded && flags & PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD) {
40264
d253f767f6cc fix various memory leaks
Fabrice Bellet <fabrice@bellet.info>
parents: 39894
diff changeset
330 gchar *filename = gplugin_plugin_get_filename(plugin);
36463
b1ce7f2998e4 Added purple_plugin_loads_on_query()
Ankit Vani <a@nevitus.org>
parents: 36460
diff changeset
331 purple_debug_info("plugins", "Auto-loading plugin %s\n",
40264
d253f767f6cc fix various memory leaks
Fabrice Bellet <fabrice@bellet.info>
parents: 39894
diff changeset
332 filename);
36508
88400e054286 Return a GError if load or unload fails
Ankit Vani <a@nevitus.org>
parents: 36507
diff changeset
333 purple_plugin_load(plugin, NULL);
40264
d253f767f6cc fix various memory leaks
Fabrice Bellet <fabrice@bellet.info>
parents: 39894
diff changeset
334 g_free(filename);
36463
b1ce7f2998e4 Added purple_plugin_loads_on_query()
Ankit Vani <a@nevitus.org>
parents: 36460
diff changeset
335 }
b1ce7f2998e4 Added purple_plugin_loads_on_query()
Ankit Vani <a@nevitus.org>
parents: 36460
diff changeset
336 }
b1ce7f2998e4 Added purple_plugin_loads_on_query()
Ankit Vani <a@nevitus.org>
parents: 36460
diff changeset
337
b1ce7f2998e4 Added purple_plugin_loads_on_query()
Ankit Vani <a@nevitus.org>
parents: 36460
diff changeset
338 g_list_free(plugins);
36429
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
339 }
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
340
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
341 PurplePlugin *
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
342 purple_plugins_find_plugin(const gchar *id)
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
343 {
36432
2de90f1d0c15 Added some checks
Ankit Vani <a@nevitus.org>
parents: 36431
diff changeset
344 PurplePlugin *plugin;
41008
dc06703548a1 Update everything for GPlugin 0.33.0
Gary Kramlich <grim@reaperworld.com>
parents: 41007
diff changeset
345 GPluginManager *manager = NULL;
36432
2de90f1d0c15 Added some checks
Ankit Vani <a@nevitus.org>
parents: 36431
diff changeset
346
2de90f1d0c15 Added some checks
Ankit Vani <a@nevitus.org>
parents: 36431
diff changeset
347 g_return_val_if_fail(id != NULL && *id != '\0', NULL);
2de90f1d0c15 Added some checks
Ankit Vani <a@nevitus.org>
parents: 36431
diff changeset
348
41008
dc06703548a1 Update everything for GPlugin 0.33.0
Gary Kramlich <grim@reaperworld.com>
parents: 41007
diff changeset
349 manager = gplugin_manager_get_default();
dc06703548a1 Update everything for GPlugin 0.33.0
Gary Kramlich <grim@reaperworld.com>
parents: 41007
diff changeset
350
dc06703548a1 Update everything for GPlugin 0.33.0
Gary Kramlich <grim@reaperworld.com>
parents: 41007
diff changeset
351 plugin = gplugin_manager_find_plugin(manager, id);
36990
b1471cc401a4 Document the g_object_unref before returning a plugin info or a plugin instance
Ankit Vani <a@nevitus.org>
parents: 36986
diff changeset
352
37178
b6865740b29c Fix tests built on Fedora
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 37146
diff changeset
353 if (!plugin)
b6865740b29c Fix tests built on Fedora
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 37146
diff changeset
354 return NULL;
b6865740b29c Fix tests built on Fedora
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 37146
diff changeset
355
36990
b1471cc401a4 Document the g_object_unref before returning a plugin info or a plugin instance
Ankit Vani <a@nevitus.org>
parents: 36986
diff changeset
356 /* GPlugin refs the plugin object before returning it. This workaround is
b1471cc401a4 Document the g_object_unref before returning a plugin info or a plugin instance
Ankit Vani <a@nevitus.org>
parents: 36986
diff changeset
357 * to avoid managing the reference counts everywhere in our codebase where
37001
e94e70e965e3 Better wording for comments in plugins.c
Ankit Vani <a@nevitus.org>
parents: 36990
diff changeset
358 * we use plugin instances. A plugin object will exist till the plugins
e94e70e965e3 Better wording for comments in plugins.c
Ankit Vani <a@nevitus.org>
parents: 36990
diff changeset
359 * subsystem is uninitialized. */
36431
ea007725fd4d Refactored the codebase to use the plugin wrapper functions
Ankit Vani <a@nevitus.org>
parents: 36429
diff changeset
360 g_object_unref(plugin);
ea007725fd4d Refactored the codebase to use the plugin wrapper functions
Ankit Vani <a@nevitus.org>
parents: 36429
diff changeset
361
ea007725fd4d Refactored the codebase to use the plugin wrapper functions
Ankit Vani <a@nevitus.org>
parents: 36429
diff changeset
362 return plugin;
36429
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
363 }
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
364
36428
ba8ead8477cb Added PurplePlugin as an alias for GPluginPlugin
Ankit Vani <a@nevitus.org>
parents: 36412
diff changeset
365 PurplePlugin *
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
366 purple_plugins_find_by_filename(const char *filename)
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
367 {
36401
b820d9a76ce9 Refactored libpurple to use the ref'd plugins list
Ankit Vani <a@nevitus.org>
parents: 36400
diff changeset
368 GList *plugins, *l;
36432
2de90f1d0c15 Added some checks
Ankit Vani <a@nevitus.org>
parents: 36431
diff changeset
369
2de90f1d0c15 Added some checks
Ankit Vani <a@nevitus.org>
parents: 36431
diff changeset
370 g_return_val_if_fail(filename != NULL && *filename != '\0', NULL);
2de90f1d0c15 Added some checks
Ankit Vani <a@nevitus.org>
parents: 36431
diff changeset
371
36401
b820d9a76ce9 Refactored libpurple to use the ref'd plugins list
Ankit Vani <a@nevitus.org>
parents: 36400
diff changeset
372 plugins = purple_plugins_find_all();
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
373
36401
b820d9a76ce9 Refactored libpurple to use the ref'd plugins list
Ankit Vani <a@nevitus.org>
parents: 36400
diff changeset
374 for (l = plugins; l != NULL; l = l->next) {
36428
ba8ead8477cb Added PurplePlugin as an alias for GPluginPlugin
Ankit Vani <a@nevitus.org>
parents: 36412
diff changeset
375 PurplePlugin *plugin = PURPLE_PLUGIN(l->data);
40264
d253f767f6cc fix various memory leaks
Fabrice Bellet <fabrice@bellet.info>
parents: 39894
diff changeset
376 gchar *plugin_filename = gplugin_plugin_get_filename(plugin);
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
377
40264
d253f767f6cc fix various memory leaks
Fabrice Bellet <fabrice@bellet.info>
parents: 39894
diff changeset
378 if (purple_strequal(plugin_filename, filename)) {
36429
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
379 g_list_free(plugins);
40264
d253f767f6cc fix various memory leaks
Fabrice Bellet <fabrice@bellet.info>
parents: 39894
diff changeset
380 g_free(plugin_filename);
36429
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
381 return plugin;
36402
a0d82b6f4081 Removed referencing of plugin from PurplePluginAction, since it is a part of the plugin.
Ankit Vani <a@nevitus.org>
parents: 36401
diff changeset
382 }
40264
d253f767f6cc fix various memory leaks
Fabrice Bellet <fabrice@bellet.info>
parents: 39894
diff changeset
383 g_free(plugin_filename);
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
384 }
36429
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
385 g_list_free(plugins);
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
386
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
387 return NULL;
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
388 }
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
389
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
390 void
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
391 purple_plugins_save_loaded(const char *key)
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
392 {
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
393 GList *pl;
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
394 GList *files = NULL;
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
395
36432
2de90f1d0c15 Added some checks
Ankit Vani <a@nevitus.org>
parents: 36431
diff changeset
396 g_return_if_fail(key != NULL && *key != '\0');
2de90f1d0c15 Added some checks
Ankit Vani <a@nevitus.org>
parents: 36431
diff changeset
397
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
398 for (pl = purple_plugins_get_loaded(); pl != NULL; pl = pl->next) {
36428
ba8ead8477cb Added PurplePlugin as an alias for GPluginPlugin
Ankit Vani <a@nevitus.org>
parents: 36412
diff changeset
399 PurplePlugin *plugin = PURPLE_PLUGIN(pl->data);
36653
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
400 PurplePluginInfo *info = purple_plugin_get_info(plugin);
36472
1945ae79bbb3 Added checks in case a plugin does not return a PluginInfo
Ankit Vani <a@nevitus.org>
parents: 36469
diff changeset
401 if (!info)
1945ae79bbb3 Added checks in case a plugin does not return a PluginInfo
Ankit Vani <a@nevitus.org>
parents: 36469
diff changeset
402 continue;
1945ae79bbb3 Added checks in case a plugin does not return a PluginInfo
Ankit Vani <a@nevitus.org>
parents: 36469
diff changeset
403
36653
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
404 if (purple_plugin_info_get_flags(info) &
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
405 PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD)
36463
b1ce7f2998e4 Added purple_plugin_loads_on_query()
Ankit Vani <a@nevitus.org>
parents: 36460
diff changeset
406 continue;
b1ce7f2998e4 Added purple_plugin_loads_on_query()
Ankit Vani <a@nevitus.org>
parents: 36460
diff changeset
407
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
408 if (!g_list_find(plugins_to_disable, plugin))
39835
c28a375781dd Remove purple_plugin_get_filename wrapper as well.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39834
diff changeset
409 files = g_list_append(
c28a375781dd Remove purple_plugin_get_filename wrapper as well.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39834
diff changeset
410 files,
c28a375781dd Remove purple_plugin_get_filename wrapper as well.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39834
diff changeset
411 (gchar *)gplugin_plugin_get_filename(plugin));
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
412 }
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
413
36456
380500e9aff2 Fixed the type of pref used to store loaded plugins, and added some debug messages
Ankit Vani <a@nevitus.org>
parents: 36450
diff changeset
414 purple_prefs_set_path_list(key, files);
40264
d253f767f6cc fix various memory leaks
Fabrice Bellet <fabrice@bellet.info>
parents: 39894
diff changeset
415 g_list_free_full(files, g_free);
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
416 }
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
417
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
418 void
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
419 purple_plugins_load_saved(const char *key)
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
420 {
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
421 GList *l, *files;
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
422
36432
2de90f1d0c15 Added some checks
Ankit Vani <a@nevitus.org>
parents: 36431
diff changeset
423 g_return_if_fail(key != NULL && *key != '\0');
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
424
36456
380500e9aff2 Fixed the type of pref used to store loaded plugins, and added some debug messages
Ankit Vani <a@nevitus.org>
parents: 36450
diff changeset
425 files = purple_prefs_get_path_list(key);
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
426
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
427 for (l = files; l; l = l->next)
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
428 {
42193
9a7a47cdd0ba Add notifications when a saved plugin fails to load
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
429 PurplePlugin *plugin;
9a7a47cdd0ba Add notifications when a saved plugin fails to load
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
430 GError *error = NULL;
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
431 char *file;
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
432
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
433 if (l->data == NULL)
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
434 continue;
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
435
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
436 file = l->data;
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
437 plugin = purple_plugins_find_by_filename(file);
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
438
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
439 if (plugin) {
42193
9a7a47cdd0ba Add notifications when a saved plugin fails to load
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
440 purple_debug_info("plugins", "Loading saved plugin %s", file);
9a7a47cdd0ba Add notifications when a saved plugin fails to load
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
441 purple_plugin_load(plugin, &error);
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
442 } else {
42193
9a7a47cdd0ba Add notifications when a saved plugin fails to load
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
443 error = g_error_new(PURPLE_PLUGINS_DOMAIN, 0,
9a7a47cdd0ba Add notifications when a saved plugin fails to load
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
444 _("Unable to find saved plugin %s"), file);
9a7a47cdd0ba Add notifications when a saved plugin fails to load
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
445 purple_debug_error("plugins", "Unable to find saved plugin %s", file);
9a7a47cdd0ba Add notifications when a saved plugin fails to load
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
446 }
9a7a47cdd0ba Add notifications when a saved plugin fails to load
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
447
9a7a47cdd0ba Add notifications when a saved plugin fails to load
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
448 if(error != NULL) {
9a7a47cdd0ba Add notifications when a saved plugin fails to load
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
449 PurpleNotification *notification = NULL;
9a7a47cdd0ba Add notifications when a saved plugin fails to load
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
450 PurpleNotificationManager *manager = NULL;
9a7a47cdd0ba Add notifications when a saved plugin fails to load
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
451 char *msg = NULL;
9a7a47cdd0ba Add notifications when a saved plugin fails to load
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
452 char *title = NULL;
9a7a47cdd0ba Add notifications when a saved plugin fails to load
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
453
9a7a47cdd0ba Add notifications when a saved plugin fails to load
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
454 if(error->message != NULL) {
9a7a47cdd0ba Add notifications when a saved plugin fails to load
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
455 msg = g_strdup(error->message);
9a7a47cdd0ba Add notifications when a saved plugin fails to load
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
456 } else {
9a7a47cdd0ba Add notifications when a saved plugin fails to load
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
457 msg = g_strdup(_("Unknown error"));
9a7a47cdd0ba Add notifications when a saved plugin fails to load
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
458 }
9a7a47cdd0ba Add notifications when a saved plugin fails to load
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
459 g_clear_error(&error);
9a7a47cdd0ba Add notifications when a saved plugin fails to load
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
460
9a7a47cdd0ba Add notifications when a saved plugin fails to load
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
461 notification = purple_notification_new(PURPLE_NOTIFICATION_TYPE_GENERIC,
9a7a47cdd0ba Add notifications when a saved plugin fails to load
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
462 NULL, msg, g_free);
9a7a47cdd0ba Add notifications when a saved plugin fails to load
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
463
9a7a47cdd0ba Add notifications when a saved plugin fails to load
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
464 purple_notification_set_icon_name(notification,
9a7a47cdd0ba Add notifications when a saved plugin fails to load
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
465 "dialog-error-symbolic");
9a7a47cdd0ba Add notifications when a saved plugin fails to load
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
466 title = g_strdup_printf(_("Failed to load saved plugin %s"), file);
9a7a47cdd0ba Add notifications when a saved plugin fails to load
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
467 purple_notification_set_title(notification, title);
9a7a47cdd0ba Add notifications when a saved plugin fails to load
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
468 g_free(title);
9a7a47cdd0ba Add notifications when a saved plugin fails to load
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
469
9a7a47cdd0ba Add notifications when a saved plugin fails to load
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
470 manager = purple_notification_manager_get_default();
9a7a47cdd0ba Add notifications when a saved plugin fails to load
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
471 purple_notification_manager_add(manager, notification);
42638
81ef32d85e5a Fix transfer annotation of purple_notification_manager_add
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42594
diff changeset
472 g_clear_object(&notification);
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
473 }
36386
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
474
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
475 g_free(l->data);
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
476 }
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
477
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
478 g_list_free(files);
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
479 }
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
480
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
481 /**************************************************************************
36367
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
482 * Plugins Subsystem API
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
483 **************************************************************************/
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
484 void
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
485 purple_plugins_init(void)
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
486 {
40978
2cb285cacbfd Fix warnings about changing types on assignment.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40963
diff changeset
487 GPluginManager *manager = NULL;
36367
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
488
40532
1079a910beff Update for new gplugin_init signature
Gary Kramlich <grim@reaperworld.com>
parents: 40441
diff changeset
489 gplugin_init(GPLUGIN_CORE_FLAGS_NONE);
37495
f28a27411235 Add PURPLE_PLUGIN_PATH environment variable
Mike Ruprecht <cmaiku@gmail.com>
parents: 37178
diff changeset
490
41008
dc06703548a1 Update everything for GPlugin 0.33.0
Gary Kramlich <grim@reaperworld.com>
parents: 41007
diff changeset
491 manager = gplugin_manager_get_default();
dc06703548a1 Update everything for GPlugin 0.33.0
Gary Kramlich <grim@reaperworld.com>
parents: 41007
diff changeset
492
41169
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41008
diff changeset
493 gplugin_manager_append_paths_from_environment(manager,
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41008
diff changeset
494 "PURPLE_PLUGIN_PATH");
37495
f28a27411235 Add PURPLE_PLUGIN_PATH environment variable
Mike Ruprecht <cmaiku@gmail.com>
parents: 37178
diff changeset
495
41008
dc06703548a1 Update everything for GPlugin 0.33.0
Gary Kramlich <grim@reaperworld.com>
parents: 41007
diff changeset
496 gplugin_manager_add_default_paths(manager);
36937
c6a5ce2be21b Call gplugin_manager_add_default_paths() from purple_plugins_init
Ankit Vani <a@nevitus.org>
parents: 36934
diff changeset
497
38834
e4144efa975e Clean up a bunch of the cruft I accidentally created
Gary Kramlich <grim@reaperworld.com>
parents: 38358
diff changeset
498 if(!g_getenv("PURPLE_PLUGINS_SKIP")) {
41008
dc06703548a1 Update everything for GPlugin 0.33.0
Gary Kramlich <grim@reaperworld.com>
parents: 41007
diff changeset
499 gplugin_manager_append_path(manager, PURPLE_LIBDIR);
38834
e4144efa975e Clean up a bunch of the cruft I accidentally created
Gary Kramlich <grim@reaperworld.com>
parents: 38358
diff changeset
500 } else {
e4144efa975e Clean up a bunch of the cruft I accidentally created
Gary Kramlich <grim@reaperworld.com>
parents: 38358
diff changeset
501 purple_debug_info("plugins", "PURPLE_PLUGINS_SKIP environment variable set, skipping normal plugin paths");
e4144efa975e Clean up a bunch of the cruft I accidentally created
Gary Kramlich <grim@reaperworld.com>
parents: 38358
diff changeset
502 }
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
503
41008
dc06703548a1 Update everything for GPlugin 0.33.0
Gary Kramlich <grim@reaperworld.com>
parents: 41007
diff changeset
504 g_signal_connect(manager, "loading-plugin",
dc06703548a1 Update everything for GPlugin 0.33.0
Gary Kramlich <grim@reaperworld.com>
parents: 41007
diff changeset
505 G_CALLBACK(plugin_loading_cb), NULL);
dc06703548a1 Update everything for GPlugin 0.33.0
Gary Kramlich <grim@reaperworld.com>
parents: 41007
diff changeset
506 g_signal_connect(manager, "loaded-plugin",
dc06703548a1 Update everything for GPlugin 0.33.0
Gary Kramlich <grim@reaperworld.com>
parents: 41007
diff changeset
507 G_CALLBACK(plugin_loaded_cb), NULL);
40940
f8b982789e1e Remove purple_plugins_get_handle and the associated signals
Gary Kramlich <grim@reaperworld.com>
parents: 40544
diff changeset
508 g_signal_connect(manager, "unloading-plugin",
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
509 G_CALLBACK(plugin_unloading_cb), NULL);
40940
f8b982789e1e Remove purple_plugins_get_handle and the associated signals
Gary Kramlich <grim@reaperworld.com>
parents: 40544
diff changeset
510 g_signal_connect(manager, "unloaded-plugin",
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
511 G_CALLBACK(plugin_unloaded_cb), NULL);
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
512
36503
bdaf9e0edf5c Register signals before initializing gplugin
Ankit Vani <a@nevitus.org>
parents: 36499
diff changeset
513 purple_plugins_refresh();
36367
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
514 }
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
515
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
516 void
36511
1ebd4a8f2b4a Removed purple_plugin_is_loadable() and purple_plugin_get_error() from the API
Ankit Vani <a@nevitus.org>
parents: 36508
diff changeset
517 purple_plugins_uninit(void)
36367
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
518 {
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
519 purple_debug_info("plugins", "Unloading all plugins\n");
36468
64d359bbe6f6 Removed purple_plugins_unload_all() from the API
Ankit Vani <a@nevitus.org>
parents: 36467
diff changeset
520 while (loaded_plugins != NULL)
36508
88400e054286 Return a GError if load or unload fails
Ankit Vani <a@nevitus.org>
parents: 36507
diff changeset
521 purple_plugin_unload(loaded_plugins->data, NULL);
36367
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
522
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
523 gplugin_uninit();
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
524 }

mercurial