void do_something_perlish(char *something) { if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_DISABLE_PERL)) { return; } maybe_source_perl_startup(); if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_DISABLE_PERL)) { return; } DEBUGMSGTL(("perl", "calling perl\n")); #if defined(HAVE_EVAL_PV) || defined(eval_pv) /* newer perl */ eval_pv(something, TRUE); #else #if defined(HAVE_PERL_EVAL_PV_LC) || defined(perl_eval_pv) /* older perl? */ perl_eval_pv(something, TRUE); #else /* HAVE_PERL_EVAL_PV_LC */ #ifdef HAVE_PERL_EVAL_PV_UC /* older perl? */ Perl_eval_pv(my_perl, something, TRUE); #else /* !HAVE_PERL_EVAL_PV_UC */ #error embedded perl broken #endif /* !HAVE_PERL_EVAL_PV_LC */ #endif /* !HAVE_PERL_EVAL_PV_UC */ #endif /* !HAVE_EVAL_PV */ DEBUGMSGTL(("perl", "finished calling perl\n")); }
static int Perl_safe_eval(PerlInterpreter * my_perl, const char *string) { char *err = NULL; Perl_eval_pv(my_perl, string, FALSE); if ((err = SvPV(get_sv("@", TRUE), n_a)) && !zstr(err)) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "[%s]\n%s\n", string, err); return -1; } return 0; }