Mercurial > pidgin.yaz
annotate libgaim/plugins/perl/common/Util.xs @ 14364:338ac096e322
[gaim-migrate @ 17070]
Disabled GTK+ components of the Perl plugin (we'll no longer support gtk-perl prefs frames until this is refactored into a gtkgaim plugin somehow).
Fix gaim_util_fetch_url and plug some leaks.
I haven't successfully tested gaim_util_fetch_url from perl yet - it doesn't seem to actually pass the retrieved text to the plugin sub correctly yet.
The syntax for calling gaim_util_fetch_url() from perl is also funky and should be made more consistent to the C function.
committer: Tailor Script <tailor@pidgin.im>
author | Daniel Atallah <daniel.atallah@gmail.com> |
---|---|
date | Mon, 28 Aug 2006 20:27:03 +0000 |
parents | fb675c9eef7a |
children | 53f7a4a8ad2a |
rev | line source |
---|---|
14192 | 1 #include "module.h" |
2 | |
3 typedef struct { | |
4 char *cb; | |
5 } GaimPerlUrlData; | |
6 | |
14364
338ac096e322
[gaim-migrate @ 17070]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
14355
diff
changeset
|
7 static void gaim_perl_util_url_cb(GaimUtilFetchUrlData *url_data, void *user_data, const gchar *url_text, size_t size, const gchar *error_message) { |
14355 | 8 GaimPerlUrlData *gpr = (GaimPerlUrlData *)user_data; |
14192 | 9 dSP; |
10 ENTER; | |
11 SAVETMPS; | |
14364
338ac096e322
[gaim-migrate @ 17070]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
14355
diff
changeset
|
12 PUSHMARK(SP); |
14192 | 13 |
14364
338ac096e322
[gaim-migrate @ 17070]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
14355
diff
changeset
|
14 XPUSHs(sv_2mortal(newSVpvn(url_text, size))); |
14192 | 15 PUTBACK; |
16 | |
17 call_pv(gpr->cb, G_EVAL | G_SCALAR); | |
18 SPAGAIN; | |
19 | |
14364
338ac096e322
[gaim-migrate @ 17070]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
14355
diff
changeset
|
20 g_free(gpr->cb); |
338ac096e322
[gaim-migrate @ 17070]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
14355
diff
changeset
|
21 g_free(gpr); |
338ac096e322
[gaim-migrate @ 17070]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
14355
diff
changeset
|
22 |
14192 | 23 PUTBACK; |
24 FREETMPS; | |
25 LEAVE; | |
26 } | |
27 | |
28 MODULE = Gaim::Util PACKAGE = Gaim::Util PREFIX = gaim_ | |
29 PROTOTYPES: ENABLE | |
30 | |
31 void | |
14355 | 32 gaim_util_fetch_url(handle, url, full, user_agent, http11, cb) |
14192 | 33 Gaim::Plugin handle |
34 const char *url | |
35 gboolean full | |
36 const char *user_agent | |
37 gboolean http11 | |
38 SV * cb | |
39 CODE: | |
40 GaimPerlUrlData *gpr; | |
41 STRLEN len; | |
14364
338ac096e322
[gaim-migrate @ 17070]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
14355
diff
changeset
|
42 char *basename; |
14192 | 43 |
44 basename = g_path_get_basename(handle->path); | |
45 gaim_perl_normalize_script_name(basename); | |
46 gpr = g_new(GaimPerlUrlData, 1); | |
47 | |
14364
338ac096e322
[gaim-migrate @ 17070]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
14355
diff
changeset
|
48 gpr->cb = g_strdup_printf("Gaim::Script::%s::%s", basename, SvPV(cb, len)); |
338ac096e322
[gaim-migrate @ 17070]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
14355
diff
changeset
|
49 g_free(basename); |
14355 | 50 gaim_util_fetch_url(url, full, user_agent, http11, gaim_perl_util_url_cb, gpr); |
14192 | 51 |
52 int | |
53 gaim_build_dir(path, mode) | |
54 const char *path | |
55 int mode | |
56 | |
57 const char * | |
58 gaim_date_format_full(tm) | |
59 const struct tm *tm | |
60 | |
61 const char * | |
62 gaim_date_format_long(tm) | |
63 const struct tm *tm | |
64 | |
65 const char * | |
66 gaim_date_format_short(tm) | |
67 const struct tm *tm | |
68 | |
69 gboolean | |
70 gaim_email_is_valid(address) | |
71 const char *address | |
72 | |
73 const char * | |
74 gaim_escape_filename(str) | |
75 const char *str | |
76 | |
77 char * | |
78 gaim_fd_get_ip(fd) | |
79 int fd | |
80 | |
81 const gchar * | |
82 gaim_home_dir() | |
83 | |
84 gboolean | |
85 gaim_markup_extract_info_field(str, len, dest, start_token, skip, end_token, check_value, no_value_token, display_name, is_link, link_prefix, format_cb) | |
86 const char *str | |
87 int len | |
88 GString *dest | |
89 const char *start_token | |
90 int skip | |
91 const char *end_token | |
92 char check_value | |
93 const char *no_value_token | |
94 const char *display_name | |
95 gboolean is_link | |
96 const char *link_prefix | |
97 Gaim::Util::InfoFieldFormatCallback format_cb | |
98 | |
99 gboolean | |
100 gaim_markup_find_tag(needle, haystack, start, end, attributes) | |
101 const char *needle | |
102 const char *haystack | |
103 const char **start | |
104 const char **end | |
105 GData **attributes | |
106 | |
107 char * | |
108 gaim_markup_get_tag_name(tag) | |
109 const char *tag | |
110 | |
111 void | |
112 gaim_markup_html_to_xhtml(html, dest_xhtml, dest_plain) | |
113 const char *html | |
114 char **dest_xhtml | |
115 char **dest_plain | |
116 | |
117 char * | |
118 gaim_markup_linkify(str) | |
119 const char *str | |
120 | |
121 char * | |
122 gaim_markup_slice(str, x, y) | |
123 const char *str | |
124 guint x | |
125 guint y | |
126 | |
127 char * | |
128 gaim_markup_strip_html(str) | |
129 const char *str | |
130 | |
131 gboolean | |
132 gaim_message_meify(message, len) | |
133 char *message | |
134 size_t len | |
135 | |
136 FILE * | |
137 gaim_mkstemp(path, binary) | |
138 char **path | |
139 gboolean binary | |
140 | |
141 const char * | |
142 gaim_normalize(account, str) | |
143 Gaim::Account account | |
144 const char *str | |
145 | |
146 gboolean | |
147 gaim_program_is_valid(program) | |
148 const char *program | |
149 | |
150 char * | |
151 gaim_str_add_cr(str) | |
152 const char *str | |
153 | |
154 char * | |
155 gaim_str_binary_to_ascii(binary, len) | |
156 const unsigned char *binary | |
157 guint len | |
158 | |
159 gboolean | |
160 gaim_str_has_prefix(s, p) | |
161 const char *s | |
162 const char *p | |
163 | |
164 gboolean | |
165 gaim_str_has_suffix(s, x) | |
166 const char *s | |
167 const char *x | |
168 | |
169 char * | |
170 gaim_str_seconds_to_string(sec) | |
171 guint sec | |
172 | |
173 char * | |
174 gaim_str_size_to_units(size) | |
175 size_t size | |
176 | |
177 void | |
178 gaim_str_strip_char(str, thechar) | |
179 char *str | |
180 char thechar | |
181 | |
182 time_t | |
183 gaim_str_to_time(timestamp, utc = FALSE, tm = NULL, tz_off = NULL, rest = NULL) | |
184 const char *timestamp | |
185 gboolean utc | |
186 struct tm *tm | |
187 long *tz_off | |
188 const char **rest | |
189 | |
190 gchar * | |
191 gaim_strcasereplace(string, delimiter, replacement) | |
192 const char *string | |
193 const char *delimiter | |
194 const char *replacement | |
195 | |
196 const char * | |
197 gaim_strcasestr(haystack, needle) | |
198 const char *haystack | |
199 const char *needle | |
200 | |
201 gchar * | |
202 gaim_strdup_withhtml(src) | |
203 const gchar *src | |
204 | |
205 gchar * | |
206 gaim_strreplace(string, delimiter, replacement) | |
207 const char *string | |
208 const char *delimiter | |
209 const char *replacement | |
210 | |
211 char * | |
212 gaim_text_strip_mnemonic(in) | |
213 const char *in | |
214 | |
215 time_t | |
216 gaim_time_build(year, month, day, hour, min, sec) | |
217 int year | |
218 int month | |
219 int day | |
220 int hour | |
221 int min | |
222 int sec | |
223 | |
224 const char * | |
225 gaim_time_format(tm) | |
226 const struct tm *tm | |
227 | |
228 const char * | |
229 gaim_unescape_filename(str) | |
230 const char *str | |
231 | |
232 char * | |
233 gaim_unescape_html(html) | |
234 const char *html | |
235 | |
236 const char * | |
237 gaim_url_decode(str) | |
238 const char *str | |
239 | |
240 const char * | |
241 gaim_url_encode(str) | |
242 const char *str | |
243 | |
244 gboolean | |
245 gaim_url_parse(url, ret_host, ret_port, ret_path, ret_user, ret_passwd) | |
246 const char *url | |
247 char **ret_host | |
248 int *ret_port | |
249 char **ret_path | |
250 char **ret_user | |
251 char **ret_passwd | |
252 | |
253 const char * | |
254 gaim_user_dir() | |
255 | |
256 const char * | |
257 gaim_utf8_strftime(const char *format, const struct tm *tm); | |
258 | |
259 void | |
260 gaim_util_set_user_dir(dir) | |
261 const char *dir | |
262 | |
263 gboolean | |
264 gaim_util_write_data_to_file(filename, data, size) | |
265 const char *filename | |
266 const char *data | |
267 size_t size |