#include "EXTERN.h" #include "perl.h" #include "XSUB.h" #ifdef WIN32 #define SIGINT 2 #endif static void my_init_debugger() { dTHR; PL_curstash = PL_debstash; PL_dbargs = GvAV(gv_AVadd((gv_fetchpv("DB::args", GV_ADDMULTI, SVt_PVAV)))); AvREAL_off(PL_dbargs); PL_DBgv = gv_fetchpv("DB::DB", GV_ADDMULTI, SVt_PVGV); PL_DBline = gv_fetchpv("DB::dbline", GV_ADDMULTI, SVt_PVAV); PL_DBsub = gv_HVadd(gv_fetchpv("DB::sub", GV_ADDMULTI, SVt_PVHV)); PL_DBsingle = GvSV((gv_fetchpv("DB::single", GV_ADDMULTI, SVt_PV))); sv_setiv(PL_DBsingle, 0); PL_DBtrace = GvSV((gv_fetchpv("DB::trace", GV_ADDMULTI, SVt_PV))); sv_setiv(PL_DBtrace, 0); PL_DBsignal = GvSV((gv_fetchpv("DB::signal", GV_ADDMULTI, SVt_PV))); sv_setiv(PL_DBsignal, 0); PL_curstash = PL_defstash; } static Sighandler_t ApacheSIGINT = NULL; MODULE = Apache::DB PACKAGE = Apache::DB PROTOTYPES: DISABLE BOOT: ApacheSIGINT = rsignal_state(whichsig("INT")); int init_debugger() CODE: if (!PL_perldb) { PL_perldb = PERLDB_ALL; my_init_debugger(); RETVAL = TRUE; } else RETVAL = FALSE; OUTPUT: RETVAL MODULE = Apache::DB PACKAGE = DB void ApacheSIGINT(...) CODE: #if ((PERL_REVISION == 5) && (PERL_VERSION >= 10)) if (ApacheSIGINT) (*ApacheSIGINT)(SIGINT, NULL, NULL); #else if (ApacheSIGINT) (*ApacheSIGINT)(SIGINT); #endif