| 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 |