1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
#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
|