Mercurial > pidgin.yaz
comparison src/plugins.c @ 1025:84a5d80e52f1
[gaim-migrate @ 1035]
remember which directory you got the last plugin from and default to /usr/local/lib/gaim/ which is where they get installed by default (please fix this, it needs to be $libdir but i don't know how to get that from configure)
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Thu, 26 Oct 2000 02:12:34 +0000 |
parents | 91b7377e7b45 |
children | 80a47e3b1bca |
comparison
equal
deleted
inserted
replaced
1024:66481301d972 | 1025:84a5d80e52f1 |
---|---|
61 static GtkWidget *plugtext; | 61 static GtkWidget *plugtext; |
62 static GtkWidget *plugwindow; | 62 static GtkWidget *plugwindow; |
63 | 63 |
64 static GtkWidget *config = NULL; | 64 static GtkWidget *config = NULL; |
65 static guint confighandle = 0; | 65 static guint confighandle = 0; |
66 static char *last_dir = NULL; | |
66 | 67 |
67 /* --------------- Function Declarations --------------------- */ | 68 /* --------------- Function Declarations --------------------- */ |
68 | 69 |
69 void show_plugins (GtkWidget *, gpointer); | 70 void show_plugins (GtkWidget *, gpointer); |
70 void load_plugin (char *); | 71 void load_plugin (char *); |
90 } | 91 } |
91 | 92 |
92 static void load_file(GtkWidget *w, gpointer data) | 93 static void load_file(GtkWidget *w, gpointer data) |
93 { | 94 { |
94 gchar *buf; | 95 gchar *buf; |
95 FILE *fd; | |
96 | 96 |
97 if (plugin_dialog) { | 97 if (plugin_dialog) { |
98 gtk_widget_show(plugin_dialog); | 98 gtk_widget_show(plugin_dialog); |
99 gdk_window_raise(plugin_dialog->window); | 99 gdk_window_raise(plugin_dialog->window); |
100 return; | 100 return; |
103 plugin_dialog = gtk_file_selection_new(_("Gaim - Plugin List")); | 103 plugin_dialog = gtk_file_selection_new(_("Gaim - Plugin List")); |
104 | 104 |
105 gtk_file_selection_hide_fileop_buttons( | 105 gtk_file_selection_hide_fileop_buttons( |
106 GTK_FILE_SELECTION(plugin_dialog)); | 106 GTK_FILE_SELECTION(plugin_dialog)); |
107 | 107 |
108 buf = g_strconcat(g_get_home_dir(), G_DIR_SEPARATOR_S, PLUGIN_DIR, NULL); | 108 if (!last_dir) |
109 fd = fopen(buf, "r"); | 109 /* someone fix me please, how do we get the dir from configure? */ |
110 if (!fd) | 110 buf = g_strdup("/usr/local/lib/gaim/"); |
111 mkdir(buf, S_IRUSR | S_IWUSR | S_IXUSR); | |
112 else | 111 else |
113 fclose(fd); | 112 buf = g_strconcat(last_dir, G_DIR_SEPARATOR_S, NULL); |
114 | 113 |
115 gtk_file_selection_set_filename(GTK_FILE_SELECTION(plugin_dialog), buf); | 114 gtk_file_selection_set_filename(GTK_FILE_SELECTION(plugin_dialog), buf); |
116 gtk_file_selection_complete(GTK_FILE_SELECTION(plugin_dialog), "*.so"); | 115 gtk_file_selection_complete(GTK_FILE_SELECTION(plugin_dialog), "*.so"); |
117 gtk_signal_connect(GTK_OBJECT(plugin_dialog), "destroy", | 116 gtk_signal_connect(GTK_OBJECT(plugin_dialog), "destroy", |
118 GTK_SIGNAL_FUNC(destroy_plugins), plugin_dialog); | 117 GTK_SIGNAL_FUNC(destroy_plugins), plugin_dialog); |
161 if (!g_path_is_absolute(filename)) | 160 if (!g_path_is_absolute(filename)) |
162 plug->filename = g_strconcat(g_get_home_dir(), G_DIR_SEPARATOR_S, | 161 plug->filename = g_strconcat(g_get_home_dir(), G_DIR_SEPARATOR_S, |
163 PLUGIN_DIR, filename, NULL); | 162 PLUGIN_DIR, filename, NULL); |
164 else | 163 else |
165 plug->filename = g_strdup(filename); | 164 plug->filename = g_strdup(filename); |
165 | |
166 if (last_dir) | |
167 g_free(last_dir); | |
168 last_dir = g_dirname(plug->filename); | |
166 | 169 |
167 debug_printf("Loading %s\n", filename); | 170 debug_printf("Loading %s\n", filename); |
168 /* do NOT `OR' with RTLD_GLOBAL, otherwise plugins may conflict | 171 /* do NOT `OR' with RTLD_GLOBAL, otherwise plugins may conflict |
169 * (it's really just a way to work around other people's bad | 172 * (it's really just a way to work around other people's bad |
170 * programming, by not using RTLD_GLOBAL :P ) */ | 173 * programming, by not using RTLD_GLOBAL :P ) */ |