Mercurial > pidgin
annotate plugins/perl/perl-common.c @ 13202:241c59e3906b
[gaim-migrate @ 15565]
fix sf bug #1413457
Having the horizontal scrollbar set to NEVER was causing weird
bugs with the new status dialog where typing into the imhtml would
cause the window to grow in width and the text would not wrap
(well, it would eventually).
I know having the horizontal scrollbar set to AUTOMATIC was causing
problems in the past, but I played around with it and everything
seems ok to me. If this becomes a problem I'm thinking we can
set it to the horizontal policy to NEVER for editable imhtmls when
using GTK < 2.4.0. I think maybe our use of GTK_WRAP_WORD_CHAR might
be a partial cause of the bug mentioned in the comment that I'm
removing.
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Thu, 09 Feb 2006 04:40:32 +0000 |
parents | 31e3c4f78aa4 |
children | d0f7f698b6de |
rev | line source |
---|---|
6520
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
1 #include "debug.h" |
6566
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
2 #include "value.h" |
6508 | 3 |
4 #include "perl-common.h" | |
5 | |
6 extern PerlInterpreter *my_perl; | |
7 | |
8 static GHashTable *object_stashes = NULL; | |
9 | |
11170 | 10 void gaim_perl_normalize_script_name(char *name) |
11 { | |
12871
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
12 char *c; |
11170 | 13 |
12871
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
14 c = strrchr(name, '.'); |
11170 | 15 |
12871
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
16 if (c != NULL) |
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
17 *c = '\0'; |
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
18 |
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
19 for (c = name; *c != '\0'; c++) { |
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
20 if (*c != '_' && !g_ascii_isalnum(*c)) |
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
21 *c = '_'; |
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
22 } |
11170 | 23 } |
24 | |
6508 | 25 static int |
26 magic_free_object(pTHX_ SV *sv, MAGIC *mg) | |
27 { | |
28 sv_setiv(sv, 0); | |
29 | |
30 return 0; | |
31 } | |
32 | |
33 static MGVTBL vtbl_free_object = | |
34 { | |
11318 | 35 NULL, NULL, NULL, NULL, magic_free_object, NULL, NULL |
6508 | 36 }; |
37 | |
38 static SV * | |
39 create_sv_ptr(void *object) | |
40 { | |
41 SV *sv; | |
42 | |
43 sv = newSViv((IV)object); | |
44 | |
45 sv_magic(sv, NULL, '~', NULL, 0); | |
46 | |
47 SvMAGIC(sv)->mg_private = 0x1551; /* HF */ | |
48 SvMAGIC(sv)->mg_virtual = &vtbl_free_object; | |
49 | |
50 return sv; | |
51 } | |
52 | |
53 SV * | |
6566
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
54 newSVGChar(const char *str) |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
55 { |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
56 SV *sv; |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
57 |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
58 if (str == NULL) |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
59 return &PL_sv_undef; |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
60 |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
61 sv = newSVpv(str, 0); |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
62 SvUTF8_on(sv); |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
63 |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
64 return sv; |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
65 } |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
66 |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
67 SV * |
6508 | 68 gaim_perl_bless_object(void *object, const char *stash_name) |
69 { | |
70 HV *stash; | |
71 HV *hv; | |
72 | |
8593
ba075b939aa6
[gaim-migrate @ 9344]
Christian Hammond <chipx86@chipx86.com>
parents:
7386
diff
changeset
|
73 if (object == NULL) |
ba075b939aa6
[gaim-migrate @ 9344]
Christian Hammond <chipx86@chipx86.com>
parents:
7386
diff
changeset
|
74 return NULL; |
ba075b939aa6
[gaim-migrate @ 9344]
Christian Hammond <chipx86@chipx86.com>
parents:
7386
diff
changeset
|
75 |
12871
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
76 if (object_stashes == NULL) { |
6508 | 77 object_stashes = g_hash_table_new(g_direct_hash, g_direct_equal); |
78 } | |
79 | |
80 stash = gv_stashpv(stash_name, 1); | |
81 | |
82 hv = newHV(); | |
83 hv_store(hv, "_gaim", 5, create_sv_ptr(object), 0); | |
84 | |
85 return sv_bless(newRV_noinc((SV *)hv), stash); | |
86 } | |
87 | |
88 gboolean | |
89 gaim_perl_is_ref_object(SV *o) | |
90 { | |
91 SV **sv; | |
92 HV *hv; | |
93 | |
94 hv = hvref(o); | |
95 | |
12871
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
96 if (hv != NULL) { |
6508 | 97 sv = hv_fetch(hv, "_gaim", 5, 0); |
98 | |
99 if (sv != NULL) | |
100 return TRUE; | |
101 } | |
102 | |
103 return FALSE; | |
104 } | |
105 | |
106 void * | |
107 gaim_perl_ref_object(SV *o) | |
108 { | |
109 SV **sv; | |
110 HV *hv; | |
111 void *p; | |
112 | |
8593
ba075b939aa6
[gaim-migrate @ 9344]
Christian Hammond <chipx86@chipx86.com>
parents:
7386
diff
changeset
|
113 if (o == NULL) |
ba075b939aa6
[gaim-migrate @ 9344]
Christian Hammond <chipx86@chipx86.com>
parents:
7386
diff
changeset
|
114 return NULL; |
ba075b939aa6
[gaim-migrate @ 9344]
Christian Hammond <chipx86@chipx86.com>
parents:
7386
diff
changeset
|
115 |
6508 | 116 hv = hvref(o); |
117 | |
118 if (hv == NULL) | |
119 return NULL; | |
120 | |
121 sv = hv_fetch(hv, "_gaim", 5, 0); | |
122 | |
123 if (sv == NULL) | |
124 croak("variable is damaged"); | |
125 | |
126 p = GINT_TO_POINTER(SvIV(*sv)); | |
127 | |
128 return p; | |
129 } | |
130 | |
6520
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
131 /* |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
132 2003/02/06: execute_perl modified by Mark Doliner <mark@kingant.net> |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
133 Pass parameters by pushing them onto the stack rather than |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
134 passing an array of strings. This way, perl scripts can |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
135 modify the parameters and we can get the changed values |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
136 and then shoot ourselves. I mean, uh, use them. |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
137 |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
138 2001/06/14: execute_perl replaced by Martin Persson <mep@passagen.se> |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
139 previous use of perl_eval leaked memory, replaced with |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
140 a version that uses perl_call instead |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
141 |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
142 30/11/2002: execute_perl modified by Eric Timme <timothy@voidnet.com> |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
143 args changed to char** so that we can have preparsed |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
144 arguments again, and many headaches ensued! This essentially |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
145 means we replaced one hacked method with a messier hacked |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
146 method out of perceived necessity. Formerly execute_perl |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
147 required a single char_ptr, and it would insert it into an |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
148 array of character pointers and NULL terminate the new array. |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
149 Now we have to pass in pre-terminated character pointer arrays |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
150 to accomodate functions that want to pass in multiple arguments. |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
151 |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
152 Previously arguments were preparsed because an argument list |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
153 was constructed in the form 'arg one','arg two' and was |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
154 executed via a call like &funcname(arglist) (see .59.x), so |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
155 the arglist was magically pre-parsed because of the method. |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
156 With Martin Persson's change to perl_call we now need to |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
157 use a null terminated list of character pointers for arguments |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
158 if we wish them to be parsed. Lacking a better way to allow |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
159 for both single arguments and many I created a NULL terminated |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
160 array in every function that called execute_perl and passed |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
161 that list into the function. In the former version a single |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
162 character pointer was passed in, and was placed into an array |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
163 of character pointers with two elements, with a NULL element |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
164 tacked onto the back, but this method no longer seemed prudent. |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
165 |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
166 Enhancements in the future might be to get rid of pre-declaring |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
167 the array sizes? I am not comfortable enough with this |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
168 subject to attempt it myself and hope it to stand the test |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
169 of time. |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
170 */ |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
171 int |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
172 execute_perl(const char *function, int argc, char **args) |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
173 { |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
174 int count = 0, i, ret_value = 1; |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
175 SV *sv_args[argc]; |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
176 STRLEN na; |
11318 | 177 dSP; |
178 PERL_SET_CONTEXT(my_perl); | |
6520
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
179 /* |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
180 * Set up the perl environment, push arguments onto the |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
181 * perl stack, then call the given function |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
182 */ |
11318 | 183 SPAGAIN; |
6520
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
184 ENTER; |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
185 SAVETMPS; |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
186 PUSHMARK(sp); |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
187 |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
188 for (i = 0; i < argc; i++) { |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
189 if (args[i]) { |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
190 sv_args[i] = sv_2mortal(newSVpv(args[i], 0)); |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
191 XPUSHs(sv_args[i]); |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
192 } |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
193 } |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
194 |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
195 PUTBACK; |
12871
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
196 PERL_SET_CONTEXT(my_perl); |
6520
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
197 count = call_pv(function, G_EVAL | G_SCALAR); |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
198 SPAGAIN; |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
199 |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
200 /* |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
201 * Check for "die," make sure we have 1 argument, and set our |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
202 * return value. |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
203 */ |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
204 if (SvTRUE(ERRSV)) { |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
205 gaim_debug(GAIM_DEBUG_ERROR, "perl", |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
206 "Perl function %s exited abnormally: %s\n", |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
207 function, SvPV(ERRSV, na)); |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
208 POPs; |
12871
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
209 } else if (count != 1) { |
6520
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
210 /* |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
211 * This should NEVER happen. G_SCALAR ensures that we WILL |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
212 * have 1 parameter. |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
213 */ |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
214 gaim_debug(GAIM_DEBUG_ERROR, "perl", |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
215 "Perl error from %s: expected 1 return value, " |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
216 "but got %d\n", function, count); |
12871
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
217 } else |
6520
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
218 ret_value = POPi; |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
219 |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
220 /* Check for changed arguments */ |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
221 for (i = 0; i < argc; i++) { |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
222 if (args[i] && strcmp(args[i], SvPVX(sv_args[i]))) { |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
223 /* |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
224 * Shizzel. So the perl script changed one of the parameters, |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
225 * and we want this change to affect the original parameters. |
8735
92cbf9713795
[gaim-migrate @ 9490]
Christian Hammond <chipx86@chipx86.com>
parents:
8593
diff
changeset
|
226 * args[i] is just a temporary little list of pointers. We don't |
6520
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
227 * want to free args[i] here because the new parameter doesn't |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
228 * overwrite the data that args[i] points to. That is done by |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
229 * the function that called execute_perl. I'm not explaining this |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
230 * very well. See, it's aggregate... Oh, but if 2 perl scripts |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
231 * both modify the data, _that's_ a memleak. This is really kind |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
232 * of hackish. I should fix it. Look how long this comment is. |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
233 * Holy crap. |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
234 */ |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
235 args[i] = g_strdup(SvPV(sv_args[i], na)); |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
236 } |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
237 } |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
238 |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
239 PUTBACK; |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
240 FREETMPS; |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
241 LEAVE; |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
242 |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
243 return ret_value; |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
244 } |
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
245 |
6566
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
246 #if 0 |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
247 gboolean |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
248 gaim_perl_value_from_sv(GaimValue *value, SV *sv) |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
249 { |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
250 switch (gaim_value_get_type(value)) |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
251 { |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
252 case GAIM_TYPE_CHAR: |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
253 if ((tmp = SvGChar(sv)) != NULL) |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
254 gaim_value_set_char(value, tmp[0]); |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
255 else |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
256 return FALSE; |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
257 break; |
6520
2e2593d95121
[gaim-migrate @ 7037]
Christian Hammond <chipx86@chipx86.com>
parents:
6508
diff
changeset
|
258 |
6566
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
259 case GAIM_TYPE_UCHAR: |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
260 if ((tmp = SvPV_nolen(sv)) != NULL) |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
261 gaim_value_set_uchar(value, tmp[0]); |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
262 else |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
263 return FALSE; |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
264 break; |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
265 |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
266 case GAIM_TYPE_BOOLEAN: |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
267 gaim_value_set_boolean(value, SvTRUE(sv)); |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
268 break; |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
269 |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
270 case GAIM_TYPE_INT: |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
271 gaim_value_set_int(value, SvIV(sv)); |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
272 break; |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
273 |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
274 case GAIM_TYPE_UINT: |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
275 gaim_value_set_uint(value, SvIV(sv)); |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
276 break; |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
277 |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
278 case GAIM_TYPE_LONG: |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
279 gaim_value_set_long(value, SvIV(sv)); |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
280 break; |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
281 |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
282 case GAIM_TYPE_ULONG: |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
283 gaim_value_set_ulong(value, SvIV(sv)); |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
284 break; |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
285 |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
286 case GAIM_TYPE_INT64: |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
287 gaim_value_set_int64(value, SvIV(sv)); |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
288 break; |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
289 |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
290 case GAIM_TYPE_UINT64: |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
291 gaim_value_set_uint64(value, SvIV(sv)); |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
292 break; |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
293 |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
294 case GAIM_TYPE_STRING: |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
295 gaim_value_set_string(value, SvGChar(sv)); |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
296 break; |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
297 |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
298 case GAIM_TYPE_POINTER: |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
299 gaim_value_set_pointer(value, (void *)SvIV(sv)); |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
300 break; |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
301 |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
302 case GAIM_TYPE_BOXED: |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
303 if (!strcmp(gaim_value_get_specific_type(value), "SV")) |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
304 gaim_value_set_boxed(value, (sv == &PL_sv_undef ? NULL : sv)); |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
305 else |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
306 gaim_value_set_boxed(value, sv); |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
307 break; |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
308 |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
309 default: |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
310 return FALSE; |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
311 } |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
312 |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
313 return TRUE; |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
314 } |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
315 |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
316 SV * |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
317 gaim_perl_sv_from_value(const GaimValue *value, va_list list) |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
318 { |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
319 switch (gaim_value_get_type(value)) |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
320 { |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
321 case GAIM_TYPE_BOOLEAN: |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
322 return newSViv(gaim_value_get_boolean(value)); |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
323 break; |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
324 |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
325 case GAIM_TYPE_INT: |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
326 return newSViv(gaim_value_get_int(value)); |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
327 break; |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
328 |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
329 case GAIM_TYPE_UINT: |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
330 return newSVuv(gaim_value_get_uint(value)); |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
331 break; |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
332 |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
333 case GAIM_TYPE_LONG: |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
334 return newSViv(gaim_value_get_long(value)); |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
335 break; |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
336 |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
337 case GAIM_TYPE_ULONG: |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
338 return newSVuv(gaim_value_get_ulong(value)); |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
339 break; |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
340 |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
341 case GAIM_TYPE_INT64: |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
342 return newSViv(gaim_value_get_int64(value)); |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
343 break; |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
344 |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
345 case GAIM_TYPE_UINT64: |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
346 return newSVuv(gaim_value_get_int64(value)); |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
347 break; |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
348 |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
349 case GAIM_TYPE_STRING: |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
350 return newSVGChar(gaim_value_get_string(value)); |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
351 break; |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
352 |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
353 case GAIM_TYPE_POINTER: |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
354 return newSViv((IV)gaim_value_get_pointer(value)); |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
355 break; |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
356 |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
357 case GAIM_TYPE_BOXED: |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
358 if (!strcmp(gaim_value_get_specific_type(value), "SV")) |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
359 { |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
360 SV *sv = (SV *)gaim_perl_get_boxed(value); |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
361 |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
362 return (sv == NULL ? &PL_sv_undef : sv); |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
363 } |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
364 |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
365 /* Uh.. I dunno. Try this? */ |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
366 return sv_2mortal(gaim_perl_bless_object( |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
367 gaim_perl_get_boxed(value), |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
368 gaim_value_get_specific_type(value))); |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
369 |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
370 default: |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
371 return FALSE; |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
372 } |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
373 |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
374 return TRUE; |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
375 } |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
376 #endif |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
377 |
6920
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
378 void * |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
379 gaim_perl_data_from_sv(GaimValue *value, SV *sv) |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
380 { |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
381 STRLEN na; |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
382 |
12871
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
383 switch (gaim_value_get_type(value)) { |
6920
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
384 case GAIM_TYPE_BOOLEAN: return (void *)SvIV(sv); |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
385 case GAIM_TYPE_INT: return (void *)SvIV(sv); |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
386 case GAIM_TYPE_UINT: return (void *)SvUV(sv); |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
387 case GAIM_TYPE_LONG: return (void *)SvIV(sv); |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
388 case GAIM_TYPE_ULONG: return (void *)SvUV(sv); |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
389 case GAIM_TYPE_INT64: return (void *)SvIV(sv); |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
390 case GAIM_TYPE_UINT64: return (void *)SvUV(sv); |
6921
11d05ddf30a3
[gaim-migrate @ 7468]
Christian Hammond <chipx86@chipx86.com>
parents:
6920
diff
changeset
|
391 case GAIM_TYPE_STRING: return g_strdup((void *)SvPV(sv, na)); |
6920
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
392 case GAIM_TYPE_POINTER: return (void *)SvIV(sv); |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
393 case GAIM_TYPE_BOXED: return (void *)SvIV(sv); |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
394 |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
395 default: |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
396 return NULL; |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
397 } |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
398 |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
399 return NULL; |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
400 } |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
401 |
6566
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
402 static SV * |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
403 gaim_perl_sv_from_subtype(const GaimValue *value, void *arg) |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
404 { |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
405 const char *stash = NULL; |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
406 |
12871
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
407 switch (gaim_value_get_subtype(value)) { |
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
408 case GAIM_SUBTYPE_ACCOUNT: |
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
409 stash = "Gaim::Account"; |
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
410 break; |
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
411 case GAIM_SUBTYPE_BLIST: |
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
412 stash = "Gaim::BuddyList"; |
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
413 break; |
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
414 case GAIM_SUBTYPE_BLIST_BUDDY: |
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
415 stash = "Gaim::BuddyList::Buddy"; |
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
416 break; |
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
417 case GAIM_SUBTYPE_BLIST_GROUP: |
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
418 stash = "Gaim::BuddyList::Group"; |
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
419 break; |
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
420 case GAIM_SUBTYPE_BLIST_CHAT: |
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
421 stash = "Gaim::BuddyList::Chat"; |
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
422 break; |
12891
a58540b16f41
[gaim-migrate @ 15244]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12871
diff
changeset
|
423 case GAIM_SUBTYPE_BUDDY_ICON: |
a58540b16f41
[gaim-migrate @ 15244]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12871
diff
changeset
|
424 stash = "Gaim::Buddy::Icon"; |
a58540b16f41
[gaim-migrate @ 15244]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12871
diff
changeset
|
425 break; |
12871
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
426 case GAIM_SUBTYPE_CONNECTION: |
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
427 stash = "Gaim::Connection"; |
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
428 break; |
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
429 case GAIM_SUBTYPE_CONVERSATION: |
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
430 stash = "Gaim::Conversation"; |
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
431 break; |
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
432 case GAIM_SUBTYPE_PLUGIN: |
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
433 stash = "Gaim::Plugin"; |
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
434 break; |
12891
a58540b16f41
[gaim-migrate @ 15244]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12871
diff
changeset
|
435 case GAIM_SUBTYPE_BLIST_NODE: |
12893
31e3c4f78aa4
[gaim-migrate @ 15246]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12891
diff
changeset
|
436 stash = "Gaim::BuddyList::Node"; |
12891
a58540b16f41
[gaim-migrate @ 15244]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12871
diff
changeset
|
437 break; |
a58540b16f41
[gaim-migrate @ 15244]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12871
diff
changeset
|
438 case GAIM_SUBTYPE_CIPHER: |
a58540b16f41
[gaim-migrate @ 15244]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12871
diff
changeset
|
439 stash = "Gaim::Cipher"; |
a58540b16f41
[gaim-migrate @ 15244]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12871
diff
changeset
|
440 break; |
a58540b16f41
[gaim-migrate @ 15244]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12871
diff
changeset
|
441 case GAIM_SUBTYPE_STATUS: |
a58540b16f41
[gaim-migrate @ 15244]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12871
diff
changeset
|
442 stash = "Gaim::Status"; |
a58540b16f41
[gaim-migrate @ 15244]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12871
diff
changeset
|
443 break; |
a58540b16f41
[gaim-migrate @ 15244]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12871
diff
changeset
|
444 case GAIM_SUBTYPE_LOG: |
a58540b16f41
[gaim-migrate @ 15244]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12871
diff
changeset
|
445 stash = "Gaim::Log"; |
a58540b16f41
[gaim-migrate @ 15244]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12871
diff
changeset
|
446 break; |
6566
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
447 |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
448 default: |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
449 stash = "Gaim"; /* ? */ |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
450 } |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
451 |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
452 return sv_2mortal(gaim_perl_bless_object(arg, stash)); |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
453 } |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
454 |
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
455 SV * |
12871
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
456 gaim_perl_sv_from_vargs(const GaimValue *value, va_list *args, void ***copy_arg) |
6566
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
457 { |
12871
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
458 if (gaim_value_is_outgoing(value)) { |
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
459 switch (gaim_value_get_type(value)) { |
6898
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
460 case GAIM_TYPE_SUBTYPE: |
6920
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
461 if ((*copy_arg = va_arg(*args, void **)) == NULL) |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
462 return &PL_sv_undef; |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
463 |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
464 return gaim_perl_sv_from_subtype(value, *(void **)*copy_arg); |
6898
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
465 |
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
466 case GAIM_TYPE_BOOLEAN: |
6921
11d05ddf30a3
[gaim-migrate @ 7468]
Christian Hammond <chipx86@chipx86.com>
parents:
6920
diff
changeset
|
467 if ((*copy_arg = (void *)va_arg(*args, gboolean *)) == NULL) |
6920
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
468 return &PL_sv_undef; |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
469 |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
470 return newSViv(*(gboolean *)*copy_arg); |
6566
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
471 |
6898
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
472 case GAIM_TYPE_INT: |
6921
11d05ddf30a3
[gaim-migrate @ 7468]
Christian Hammond <chipx86@chipx86.com>
parents:
6920
diff
changeset
|
473 if ((*copy_arg = (void *)va_arg(*args, int *)) == NULL) |
6920
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
474 return &PL_sv_undef; |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
475 |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
476 return newSViv(*(int *)*copy_arg); |
6898
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
477 |
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
478 case GAIM_TYPE_UINT: |
6921
11d05ddf30a3
[gaim-migrate @ 7468]
Christian Hammond <chipx86@chipx86.com>
parents:
6920
diff
changeset
|
479 if ((*copy_arg = (void *)va_arg(*args, unsigned int *)) == NULL) |
6920
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
480 return &PL_sv_undef; |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
481 |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
482 return newSVuv(*(unsigned int *)*copy_arg); |
6898
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
483 |
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
484 case GAIM_TYPE_LONG: |
6921
11d05ddf30a3
[gaim-migrate @ 7468]
Christian Hammond <chipx86@chipx86.com>
parents:
6920
diff
changeset
|
485 if ((*copy_arg = (void *)va_arg(*args, long *)) == NULL) |
6920
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
486 return &PL_sv_undef; |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
487 |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
488 return newSViv(*(long *)*copy_arg); |
6566
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
489 |
6898
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
490 case GAIM_TYPE_ULONG: |
6921
11d05ddf30a3
[gaim-migrate @ 7468]
Christian Hammond <chipx86@chipx86.com>
parents:
6920
diff
changeset
|
491 if ((*copy_arg = (void *)va_arg(*args, |
11d05ddf30a3
[gaim-migrate @ 7468]
Christian Hammond <chipx86@chipx86.com>
parents:
6920
diff
changeset
|
492 unsigned long *)) == NULL) |
6920
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
493 return &PL_sv_undef; |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
494 |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
495 return newSVuv(*(unsigned long *)*copy_arg); |
6566
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
496 |
6898
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
497 case GAIM_TYPE_INT64: |
6921
11d05ddf30a3
[gaim-migrate @ 7468]
Christian Hammond <chipx86@chipx86.com>
parents:
6920
diff
changeset
|
498 if ((*copy_arg = (void *)va_arg(*args, gint64 *)) == NULL) |
6920
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
499 return &PL_sv_undef; |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
500 |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
501 return newSViv(*(gint64 *)*copy_arg); |
6898
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
502 |
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
503 case GAIM_TYPE_UINT64: |
6921
11d05ddf30a3
[gaim-migrate @ 7468]
Christian Hammond <chipx86@chipx86.com>
parents:
6920
diff
changeset
|
504 if ((*copy_arg = (void *)va_arg(*args, guint64 *)) == NULL) |
6920
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
505 return &PL_sv_undef; |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
506 |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
507 return newSVuv(*(guint64 *)*copy_arg); |
6566
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
508 |
6898
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
509 case GAIM_TYPE_STRING: |
6921
11d05ddf30a3
[gaim-migrate @ 7468]
Christian Hammond <chipx86@chipx86.com>
parents:
6920
diff
changeset
|
510 if ((*copy_arg = (void *)va_arg(*args, char **)) == NULL) |
6920
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
511 return &PL_sv_undef; |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
512 |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
513 return newSVGChar(*(char **)*copy_arg); |
6898
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
514 |
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
515 case GAIM_TYPE_POINTER: |
6920
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
516 if ((*copy_arg = va_arg(*args, void **)) == NULL) |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
517 return &PL_sv_undef; |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
518 |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
519 return newSViv((IV)*(void **)*copy_arg); |
6566
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
520 |
6898
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
521 case GAIM_TYPE_BOXED: |
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
522 /* Uh.. I dunno. Try this? */ |
6920
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
523 if ((*copy_arg = va_arg(*args, void **)) == NULL) |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
524 return &PL_sv_undef; |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
525 |
6898
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
526 return sv_2mortal(gaim_perl_bless_object( |
6920
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
527 *(void **)*copy_arg, |
6898
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
528 gaim_value_get_specific_type(value))); |
6566
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
529 |
6898
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
530 default: |
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
531 /* If this happens, things are going to get screwed up... */ |
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
532 return NULL; |
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
533 } |
12871
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
534 } else { |
2422097a7a5e
[gaim-migrate @ 15223]
Etan Reisner <pidgin@unreliablesource.net>
parents:
12837
diff
changeset
|
535 switch (gaim_value_get_type(value)) { |
6898
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
536 case GAIM_TYPE_SUBTYPE: |
6920
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
537 if ((*copy_arg = va_arg(*args, void *)) == NULL) |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
538 return &PL_sv_undef; |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
539 |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
540 return gaim_perl_sv_from_subtype(value, *copy_arg); |
6566
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
541 |
6898
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
542 case GAIM_TYPE_BOOLEAN: |
7386 | 543 *copy_arg = GINT_TO_POINTER( va_arg(*args, gboolean) ); |
6920
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
544 |
7386 | 545 return newSViv((gboolean)GPOINTER_TO_INT(*copy_arg)); |
6898
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
546 |
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
547 case GAIM_TYPE_INT: |
7386 | 548 *copy_arg = GINT_TO_POINTER( va_arg(*args, int) ); |
6920
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
549 |
7386 | 550 return newSViv(GPOINTER_TO_INT(*copy_arg)); |
6566
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
551 |
6898
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
552 case GAIM_TYPE_UINT: |
7386 | 553 *copy_arg = GUINT_TO_POINTER(va_arg(*args, unsigned int)); |
6920
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
554 |
7386 | 555 return newSVuv(GPOINTER_TO_UINT(*copy_arg)); |
6898
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
556 |
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
557 case GAIM_TYPE_LONG: |
6920
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
558 *copy_arg = (void *)va_arg(*args, long); |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
559 |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
560 return newSViv((long)*copy_arg); |
6566
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
561 |
6898
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
562 case GAIM_TYPE_ULONG: |
6920
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
563 *copy_arg = (void *)va_arg(*args, unsigned long); |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
564 |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
565 return newSVuv((unsigned long)*copy_arg); |
6898
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
566 |
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
567 case GAIM_TYPE_INT64: |
6920
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
568 #if 0 |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
569 /* XXX This yells and complains. */ |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
570 *copy_arg = va_arg(*args, gint64); |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
571 |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
572 return newSViv(*copy_arg); |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
573 #endif |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
574 break; |
6898
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
575 |
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
576 case GAIM_TYPE_UINT64: |
6920
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
577 /* XXX This also yells and complains. */ |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
578 #if 0 |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
579 *copy_arg = (void *)va_arg(*args, guint64); |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
580 |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
581 return newSVuv(*copy_arg); |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
582 #endif |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
583 break; |
6898
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
584 |
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
585 case GAIM_TYPE_STRING: |
6920
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
586 if ((*copy_arg = (void *)va_arg(*args, char *)) == NULL) |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
587 return &PL_sv_undef; |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
588 |
7240
d3a7ff6a91bb
[gaim-migrate @ 7815]
Christian Hammond <chipx86@chipx86.com>
parents:
7239
diff
changeset
|
589 return newSVGChar((char *)*copy_arg); |
6566
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
590 |
6898
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
591 case GAIM_TYPE_POINTER: |
6920
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
592 if ((*copy_arg = (void *)va_arg(*args, void *)) == NULL) |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
593 return &PL_sv_undef; |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
594 |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
595 return newSViv((IV)*copy_arg); |
6566
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
596 |
6898
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
597 case GAIM_TYPE_BOXED: |
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
598 /* Uh.. I dunno. Try this? */ |
6920
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
599 if ((*copy_arg = (void *)va_arg(*args, void *)) == NULL) |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
600 return &PL_sv_undef; |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
601 |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
602 return sv_2mortal(gaim_perl_bless_object(*copy_arg, |
6898
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
603 gaim_value_get_specific_type(value))); |
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
604 |
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
605 default: |
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
606 /* If this happens, things are going to get screwed up... */ |
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
607 return NULL; |
806f6e950e76
[gaim-migrate @ 7445]
Christian Hammond <chipx86@chipx86.com>
parents:
6897
diff
changeset
|
608 } |
6566
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
609 } |
6920
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
610 |
13f78c350cd3
[gaim-migrate @ 7467]
Christian Hammond <chipx86@chipx86.com>
parents:
6898
diff
changeset
|
611 return NULL; |
6566
f6c2a7b5afa7
[gaim-migrate @ 7088]
Christian Hammond <chipx86@chipx86.com>
parents:
6531
diff
changeset
|
612 } |