#define PERL_NO_GET_CONTEXT
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
int safety_get(pTHX_ SV* sv, MAGIC* magic) {
sv_setiv(sv, PL_signals & PERL_SIGNALS_UNSAFE_FLAG ? 0 : 1);
return 0;
}
int safety_set(pTHX_ SV* sv, MAGIC* magic) {
if (SvIV(sv))
PL_signals &= ~PERL_SIGNALS_UNSAFE_FLAG;
else
PL_signals |= PERL_SIGNALS_UNSAFE_FLAG;
return 0;
}
const MGVTBL safety_table = { safety_get, safety_set };
MODULE = Signal::Safety PACKAGE = Signal::Safety
BOOT:
{
SV* safety = get_sv("Signal::Safety", GV_ADD | GV_ADDMULTI);
sv_magicext(safety, NULL, PERL_MAGIC_ext, &safety_table, NULL, 0);
}