comparison src/plugin.c @ 12342:0692d20d9d81

[gaim-migrate @ 14646] sf patch #1361667, from Sadrul Habib Chowdhury "Gaim currently loads a plugin twice if it exists in user's home directory, and also in LIBDIR. This can create confusion in the plugins-dialog -- especially when someone modifies some plugin and installs in his home-directory. I think it'd be better to load only the plugin which is in user's home directory in such cases." committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Mon, 05 Dec 2005 04:19:07 +0000
parents 720fb68418d8
children 70f18c73da9d
comparison
equal deleted inserted replaced
12341:eea31c8cc9f7 12342:0692d20d9d81
198 { 198 {
199 #ifdef GAIM_PLUGINS 199 #ifdef GAIM_PLUGINS
200 GaimPlugin *plugin = NULL; 200 GaimPlugin *plugin = NULL;
201 GaimPlugin *loader; 201 GaimPlugin *loader;
202 gpointer unpunned; 202 gpointer unpunned;
203 gchar *basename = NULL;
203 gboolean (*gaim_init_plugin)(GaimPlugin *); 204 gboolean (*gaim_init_plugin)(GaimPlugin *);
204 205
205 gaim_debug_misc("plugins", "probing %s\n", filename); 206 gaim_debug_misc("plugins", "probing %s\n", filename);
206 g_return_val_if_fail(filename != NULL, NULL); 207 g_return_val_if_fail(filename != NULL, NULL);
207 208
208 if (!g_file_test(filename, G_FILE_TEST_EXISTS)) 209 if (!g_file_test(filename, G_FILE_TEST_EXISTS))
209 return NULL; 210 return NULL;
210 211
211 /* If this plugin has already been probed then exit */ 212 /* If this plugin has already been probed then exit */
212 plugin = gaim_plugins_find_with_filename(filename); 213 basename = gaim_plugin_get_basename(filename);
214 plugin = gaim_plugins_find_with_basename(basename);
215 g_free(basename);
213 if (plugin != NULL) 216 if (plugin != NULL)
217 {
218 if (strcmp(filename, plugin->path))
219 gaim_debug_info("plugins", "Not loading %s."
220 "Another plugin with the same name (%s) has already been loaded.\n",
221 filename, plugin->path);
214 return plugin; 222 return plugin;
223 }
215 224
216 plugin = gaim_plugin_new(has_file_extension(filename, G_MODULE_SUFFIX), filename); 225 plugin = gaim_plugin_new(has_file_extension(filename, G_MODULE_SUFFIX), filename);
217 226
218 if (plugin->native_plugin) { 227 if (plugin->native_plugin) {
219 const char *error; 228 const char *error;