Mercurial > pidgin
comparison src/plugin.c @ 13527:33dc57ccbd83
[gaim-migrate @ 15903]
Prevent plugins that have more than one period in the name from being duplicated with every probe.
committer: Tailor Script <tailor@pidgin.im>
| author | Daniel Atallah <daniel.atallah@gmail.com> |
|---|---|
| date | Mon, 20 Mar 2006 05:06:26 +0000 |
| parents | 10c26505d6db |
| children | 8ec038ec9998 |
comparison
equal
deleted
inserted
replaced
| 13526:e79d8720de34 | 13527:33dc57ccbd83 |
|---|---|
| 1206 | 1206 |
| 1207 if (f->data == NULL) | 1207 if (f->data == NULL) |
| 1208 continue; | 1208 continue; |
| 1209 | 1209 |
| 1210 filename = f->data; | 1210 filename = f->data; |
| 1211 | |
| 1211 /* | 1212 /* |
| 1212 * We don't know if the filename uses Windows or Unix path | 1213 * We don't know if the filename uses Windows or Unix path |
| 1213 * separators (because people might be sharing a prefs.xml | 1214 * separators (because people might be sharing a prefs.xml |
| 1214 * file across systems), so we find the last occurrence | 1215 * file across systems), so we find the last occurrence |
| 1215 * of either. | 1216 * of either. |
| 1218 if ((basename == NULL) || (basename < strrchr(filename, '\\'))) | 1219 if ((basename == NULL) || (basename < strrchr(filename, '\\'))) |
| 1219 basename = strrchr(filename, '\\'); | 1220 basename = strrchr(filename, '\\'); |
| 1220 if (basename != NULL) | 1221 if (basename != NULL) |
| 1221 basename++; | 1222 basename++; |
| 1222 | 1223 |
| 1224 /* Strip the extension */ | |
| 1225 basename = gaim_plugin_get_basename(basename); | |
| 1226 | |
| 1223 if ((plugin = gaim_plugins_find_with_filename(filename)) != NULL) | 1227 if ((plugin = gaim_plugins_find_with_filename(filename)) != NULL) |
| 1224 { | 1228 { |
| 1225 gaim_debug_info("plugins", "Loading saved plugin %s\n", | 1229 gaim_debug_info("plugins", "Loading saved plugin %s\n", |
| 1226 plugin->path); | 1230 plugin->path); |
| 1227 gaim_plugin_load(plugin); | 1231 gaim_plugin_load(plugin); |
| 1235 else | 1239 else |
| 1236 { | 1240 { |
| 1237 gaim_debug_error("plugins", "Unable to find saved plugin %s\n", | 1241 gaim_debug_error("plugins", "Unable to find saved plugin %s\n", |
| 1238 filename); | 1242 filename); |
| 1239 } | 1243 } |
| 1244 | |
| 1245 g_free(basename); | |
| 1240 | 1246 |
| 1241 g_free(f->data); | 1247 g_free(f->data); |
| 1242 } | 1248 } |
| 1243 | 1249 |
| 1244 g_list_free(files); | 1250 g_list_free(files); |
| 1494 gaim_plugins_find_with_basename(const char *basename) | 1500 gaim_plugins_find_with_basename(const char *basename) |
| 1495 { | 1501 { |
| 1496 #ifdef GAIM_PLUGINS | 1502 #ifdef GAIM_PLUGINS |
| 1497 GaimPlugin *plugin; | 1503 GaimPlugin *plugin; |
| 1498 GList *l; | 1504 GList *l; |
| 1499 char *basename_no_ext; | |
| 1500 char *tmp; | 1505 char *tmp; |
| 1501 | 1506 |
| 1502 g_return_val_if_fail(basename != NULL, NULL); | 1507 g_return_val_if_fail(basename != NULL, NULL); |
| 1503 | |
| 1504 basename_no_ext = gaim_plugin_get_basename(basename); | |
| 1505 | 1508 |
| 1506 for (l = plugins; l != NULL; l = l->next) | 1509 for (l = plugins; l != NULL; l = l->next) |
| 1507 { | 1510 { |
| 1508 plugin = (GaimPlugin *)l->data; | 1511 plugin = (GaimPlugin *)l->data; |
| 1509 | 1512 |
| 1510 if (plugin->path != NULL) { | 1513 if (plugin->path != NULL) { |
| 1511 tmp = gaim_plugin_get_basename(plugin->path); | 1514 tmp = gaim_plugin_get_basename(plugin->path); |
| 1512 if (!strcmp(tmp, basename_no_ext)) | 1515 if (!strcmp(tmp, basename)) |
| 1513 { | 1516 { |
| 1514 g_free(tmp); | 1517 g_free(tmp); |
| 1515 g_free(basename_no_ext); | |
| 1516 return plugin; | 1518 return plugin; |
| 1517 } | 1519 } |
| 1518 g_free(tmp); | 1520 g_free(tmp); |
| 1519 } | 1521 } |
| 1520 } | 1522 } |
| 1521 | 1523 |
| 1522 g_free(basename_no_ext); | |
| 1523 #endif /* GAIM_PLUGINS */ | 1524 #endif /* GAIM_PLUGINS */ |
| 1524 | 1525 |
| 1525 return NULL; | 1526 return NULL; |
| 1526 } | 1527 } |
| 1527 | 1528 |
