dougm 01/04/19 10:38:56 Modified: xs/Apache/Filter Apache__Filter.h Log: add MODIFY_CODE_ATTRIBUTES method Revision Changes Path 1.4 +42 -0 modperl-2.0/xs/Apache/Filter/Apache__Filter.h Index: Apache__Filter.h =================================================================== RCS file: /home/cvs/modperl-2.0/xs/Apache/Filter/Apache__Filter.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- Apache__Filter.h 2001/04/13 07:17:07 1.3 +++ Apache__Filter.h 2001/04/19 17:38:54 1.4 @@ -55,3 +55,45 @@ return len; } + +static MP_INLINE I32 *modperl_filter_attributes(SV *package, SV *cvrv) +{ + return &MP_CODE_ATTRS(SvRV(cvrv)); +} + +static XS(MPXS_modperl_filter_attributes) +{ + dXSARGS; + I32 *attrs = modperl_filter_attributes(ST(0), ST(1)); + I32 i; + + for (i=2; i < items; i++) { + STRLEN len; + char *pv = SvPV(ST(i), len); + char *attribute = pv; + + switch (*pv) { + case 'I': + if (strnEQ(pv, "InputFilter", 11)) { + pv += 11; + switch (*pv) { + case 'B': + if (strEQ(pv, "Body")) { + *attrs |= MP_INPUT_FILTER_BODY; + continue; + } + case 'M': + if (strEQ(pv, "Message")) { + *attrs |= MP_INPUT_FILTER_MESSAGE; + continue; + } + } + } + default: + XPUSHs_mortal_pv(attribute); + XSRETURN(1); + } + } + + XSRETURN_EMPTY; +}