8 #define fix(s) ((s) ? (s) : "")
16 #define new_pv(a) newSVpv(fix(a), xstrlen(a))
19 ((o) && SvROK(o) && SvRV(o) && (SvTYPE(SvRV(o)) == SVt_PVHV))
22 (is_hvref(o) ? (HV *)SvRV(o) : NULL)
26 #define PERL_HANDLER_HEADER(x) \
27 char *fullproc, *error; \
28 int perl_retcount, ret = 0;\
31 fullproc = saprintf("Ekg2::Script::%s::%s", scr->name, x);\
47 #undef PERL_HANDLER_FOOTER
49 #ifdef PERL_RESTORE_ARGS
50 #define RESTORE_ARGS(x)\
52 for (i=0; i < scr_que->argc; i++) {\
53 if (scr_que->argv_type[i] & QUERY_ARG_CONST)\
55 switch ( scr_que->argv_type[i] & QUERY_ARG_TYPES ) {\
56 case (QUERY_ARG_INT):\
57 *( (int *) args[i]) = SvIV(SvRV(perlargs[i]));\
60 case (QUERY_ARG_CHARP):\
62 char *retarg = xstrdup( SvPV_nolen(SvRV(perlargs[i])) ); \
63 if ( xstrcmp(retarg, *( (char **) args[i])) ) {\
64 xfree(*(char **) args[i]); \
65 *( (char **) args[i]) = retarg;\
70 case (QUERY_ARG_CHARPP): \
78 #define RESTORE_ARGS(x) ;
81 #define PERL_HANDLER_FOOTER()\
84 perl_retcount = perl_call_pv(fullproc, G_EVAL);\
87 error = SvPV(ERRSV, PL_na);\
88 print("script_error", error);\
89 ret = SCRIPT_HANDLE_UNBIND;\
91 else if (perl_retcount > 0)\
94 ret = SvIV(perl_ret);\
103 if (ret < 0) return -1;\
int perl_initialize()
Definition: perl_core.c:229
SV * create_sv_ptr(void *object)
Definition: perl_core.c:273
int perl_finalize()
Definition: perl_core.c:371