Changeset 25729b2 for perlconfig.c
- Timestamp:
- Jan 8, 2007, 4:17:55 PM (18 years ago)
- Branches:
- master, barnowl_perlaim, debian, release-1.10, release-1.4, release-1.5, release-1.6, release-1.7, release-1.8, release-1.9
- Children:
- 723f464
- Parents:
- 6beac73
- git-author:
- Nelson Elhage <nelhage@mit.edu> (01/08/07 15:55:09)
- git-committer:
- Nelson Elhage <nelhage@mit.edu> (01/08/07 16:17:55)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
perlconfig.c
ra55abb3 r25729b2 161 161 return out; 162 162 } 163 164 165 /* Calls a method on a perl object representing a message. 166 If the return value is non-null, the caller must free it. 167 */ 168 char * owl_perlconfig_message_call_method(owl_message *m, char *method, int argc, char ** argv) 169 { 170 dSP; 171 unsigned int count, len, i; 172 SV *msgref, *srv; 173 char *out, *preout; 174 175 msgref = owl_perlconfig_message2hashref(m); 176 177 ENTER; 178 SAVETMPS; 179 180 PUSHMARK(SP); 181 XPUSHs(msgref); 182 for(i=0;i<argc;i++) { 183 XPUSHs(sv_2mortal(newSVpv(argv[i], 0))); 184 } 185 PUTBACK; 186 187 count = call_method(method, G_SCALAR|G_KEEPERR|G_EVAL); 188 189 SPAGAIN; 190 191 if(count != 1) { 192 fprintf(stderr, "perl returned wrong count %d\n", count); 193 abort(); 194 } 195 196 if (SvTRUE(ERRSV)) { 197 STRLEN n_a; 198 owl_function_error("Error: '%s'", SvPV(ERRSV, n_a)); 199 /* and clear the error */ 200 sv_setsv (ERRSV, &PL_sv_undef); 201 } 202 203 srv = POPs; 204 205 if (srv) { 206 preout=SvPV(srv, len); 207 out = owl_malloc(strlen(preout)+1); 208 strncpy(out, preout, len); 209 out[len] = '\0'; 210 } else { 211 out = NULL; 212 } 213 214 PUTBACK; 215 FREETMPS; 216 LEAVE; 217 218 return out; 219 } 220 163 221 164 222 char *owl_perlconfig_readconfig(void)
Note: See TracChangeset
for help on using the changeset viewer.