libpurple/plugins/perl/perl-common.c

changeset 22839
3ee4247ebbbd
parent 17471
fcb31ec08595
child 23915
b62601fd6e7d
equal deleted inserted replaced
22838:3c311b12b12d 22839:3ee4247ebbbd
614 } 614 }
615 } 615 }
616 616
617 return NULL; 617 return NULL;
618 } 618 }
619
620 SV *purple_perl_sv_from_fun(PurplePlugin *plugin, SV *callback)
621 {
622 SV *sv = NULL;
623
624 if (SvTYPE(callback) == SVt_RV) {
625 SV *cbsv = SvRV(callback);
626
627 if (SvTYPE(cbsv) == SVt_PVCV) {
628 sv = newSVsv(callback);
629 }
630 } else if (SvTYPE(callback) == SVt_PV) {
631 PurplePerlScript *gps;
632
633 gps = (PurplePerlScript *)PURPLE_PLUGIN_LOADER_INFO(plugin);
634 sv = newSVpvf("%s::%s", gps->package, SvPV_nolen(callback));
635 } else {
636 purple_debug_warning("perl", "Callback not a valid type, only strings and coderefs allowed.\n");
637 }
638
639 return sv;
640 }
641

mercurial