Mercurial > pidgin.yaz
comparison src/plugin.c @ 10479:12460aa2c820
[gaim-migrate @ 11766]
grim made me do it
committer: Tailor Script <tailor@pidgin.im>
| author | Nathan Walp <nwalp@pidgin.im> |
|---|---|
| date | Thu, 06 Jan 2005 06:16:50 +0000 |
| parents | 61ef9a964574 |
| children | 1a97d5e88d12 |
comparison
equal
deleted
inserted
replaced
| 10478:d497f3a2686f | 10479:12460aa2c820 |
|---|---|
| 31 #include "version.h" | 31 #include "version.h" |
| 32 | 32 |
| 33 #ifdef _WIN32 | 33 #ifdef _WIN32 |
| 34 # define PLUGIN_EXT ".dll" | 34 # define PLUGIN_EXT ".dll" |
| 35 #else | 35 #else |
| 36 #ifdef __hpux | 36 # ifdef __hpux |
| 37 # define PLUGIN_EXT ".sl" | 37 # define PLUGIN_EXT ".sl" |
| 38 #else | 38 # else |
| 39 # define PLUGIN_EXT ".so" | 39 # define PLUGIN_EXT ".so" |
| 40 #endif | 40 # endif |
| 41 #endif | 41 #endif |
| 42 | 42 |
| 43 typedef struct | 43 typedef struct |
| 44 { | 44 { |
| 45 GHashTable *commands; | 45 GHashTable *commands; |
| 69 static void *probe_cb_data = NULL; | 69 static void *probe_cb_data = NULL; |
| 70 static void (*load_cb)(GaimPlugin *, void *) = NULL; | 70 static void (*load_cb)(GaimPlugin *, void *) = NULL; |
| 71 static void *load_cb_data = NULL; | 71 static void *load_cb_data = NULL; |
| 72 static void (*unload_cb)(GaimPlugin *, void *) = NULL; | 72 static void (*unload_cb)(GaimPlugin *, void *) = NULL; |
| 73 static void *unload_cb_data = NULL; | 73 static void *unload_cb_data = NULL; |
| 74 | |
| 75 | |
| 76 void * | |
| 77 gaim_plugins_get_handle(void) | |
| 78 { | |
| 79 static int handle; | |
| 80 | |
| 81 return &handle; | |
| 82 } | |
| 83 | |
| 84 | 74 |
| 85 #ifdef GAIM_PLUGINS | 75 #ifdef GAIM_PLUGINS |
| 86 static gboolean | 76 static gboolean |
| 87 has_file_extension(const char *filename, const char *ext) | 77 has_file_extension(const char *filename, const char *ext) |
| 88 { | 78 { |
| 784 return ret_value; | 774 return ret_value; |
| 785 } | 775 } |
| 786 | 776 |
| 787 /************************************************************************** | 777 /************************************************************************** |
| 788 * Plugins subsystem | 778 * Plugins subsystem |
| 779 **************************************************************************/ | |
| 780 void * | |
| 781 gaim_plugins_get_handle(void) { | |
| 782 static int handle; | |
| 783 | |
| 784 return &handle; | |
| 785 } | |
| 786 | |
| 787 void | |
| 788 gaim_plugins_init(void) { | |
| 789 void *handle = gaim_plugins_get_handle(); | |
| 790 | |
| 791 gaim_signal_register(handle, "plugin-load", | |
| 792 gaim_marshal_VOID__POINTER, | |
| 793 NULL, 1, | |
| 794 gaim_value_new(GAIM_TYPE_SUBTYPE, | |
| 795 GAIM_SUBTYPE_PLUGIN)); | |
| 796 gaim_signal_register(handle, "plugin-unload", | |
| 797 gaim_marshal_VOID__POINTER, | |
| 798 NULL, 1, | |
| 799 gaim_value_new(GAIM_TYPE_SUBTYPE, | |
| 800 GAIM_SUBTYPE_PLUGIN)); | |
| 801 } | |
| 802 | |
| 803 void | |
| 804 gaim_plugins_uninit(void) { | |
| 805 gaim_signals_disconnect_by_handle(gaim_plugins_get_handle()); | |
| 806 } | |
| 807 | |
| 808 /************************************************************************** | |
| 809 * Plugins API | |
| 789 **************************************************************************/ | 810 **************************************************************************/ |
| 790 void | 811 void |
| 791 gaim_plugins_add_search_path(const char *path) | 812 gaim_plugins_add_search_path(const char *path) |
| 792 { | 813 { |
| 793 g_return_if_fail(path != NULL); | 814 g_return_if_fail(path != NULL); |
| 869 gchar *path; | 890 gchar *path; |
| 870 GaimPlugin *plugin; | 891 GaimPlugin *plugin; |
| 871 GList *cur; | 892 GList *cur; |
| 872 const char *search_path; | 893 const char *search_path; |
| 873 | 894 |
| 874 void *handle; | |
| 875 | |
| 876 if (!g_module_supported()) | 895 if (!g_module_supported()) |
| 877 return; | 896 return; |
| 878 | |
| 879 handle = gaim_plugins_get_handle(); | |
| 880 | |
| 881 /* TODO: These signals need to be registered in an init function */ | |
| 882 gaim_debug_info("plugins", "registering plugin-load signal\n"); | |
| 883 gaim_signal_register(handle, "plugin-load", gaim_marshal_VOID__POINTER, NULL, | |
| 884 1, gaim_value_new(GAIM_TYPE_SUBTYPE, GAIM_SUBTYPE_PLUGIN)); | |
| 885 | |
| 886 gaim_debug_info("plugins", "registering plugin-unload signal\n"); | |
| 887 gaim_signal_register(handle, "plugin-unload", gaim_marshal_VOID__POINTER, NULL, | |
| 888 1, gaim_value_new(GAIM_TYPE_SUBTYPE, GAIM_SUBTYPE_PLUGIN)); | |
| 889 | |
| 890 | 897 |
| 891 /* Probe plugins */ | 898 /* Probe plugins */ |
| 892 for (cur = search_paths; cur != NULL; cur = cur->next) | 899 for (cur = search_paths; cur != NULL; cur = cur->next) |
| 893 { | 900 { |
| 894 search_path = cur->data; | 901 search_path = cur->data; |
