Idź do dokumentacji tego pliku.
13 #define fix(s) ((s) ? (s) : "")
21 #define new_pv(a) newSVpv(fix(a), xstrlen(a))
24 ((o) && SvROK(o) && SvRV(o) && (SvTYPE(SvRV(o)) == SVt_PVHV))
27 (is_hvref(o) ? (HV *)SvRV(o) : NULL)
31 #define PERL_HANDLER_HEADER(x) \
32 char *fullproc, *error; \
33 int perl_retcount, ret = 0;\
36 fullproc = saprintf("Ekg2::Script::%s::%s", scr->name, x);\
52 #undef PERL_HANDLER_FOOTER
54 #ifdef PERL_RESTORE_ARGS
55 #define RESTORE_ARGS(x)\
57 for (i=0; i < scr_que->argc; i++) {\
58 switch ( scr_que->argv_type[i] ) {\
59 case (QUERY_ARG_INT):\
60 *( (int *) args[i]) = SvIV(SvRV(perlargs[i]));\
63 case (QUERY_ARG_CHARP):\
65 char *retarg = xstrdup( SvPV_nolen(SvRV(perlargs[i])) ); \
66 if ( xstrcmp(retarg, *( (char **) args[i])) ) {\
67 xfree(*(char **) args[i]); \
68 *( (char **) args[i]) = retarg;\
73 case (QUERY_ARG_CHARPP): \
81 #define RESTORE_ARGS(x) ;
84 #define PERL_HANDLER_FOOTER()\
87 perl_retcount = perl_call_pv(fullproc, G_EVAL);\
90 error = SvPV(ERRSV, PL_na);\
91 print("script_error", error);\
92 ret = SCRIPT_HANDLE_UNBIND;\
94 else if (perl_retcount > 0)\
97 ret = SvIV(perl_ret);\
106 if (ret < 0) return -1;\