MP_TRACE_f(MP_FUNC, "filter=0x%lx, mode=%s\n", (unsigned long)filter, mode == MP_INPUT_FILTER_MODE ? "input" : "output");
MP_TRACE_f(MP_FUNC, MP_FILTER_NAME_FORMAT "new: %s %s filter (0x%lx)\n", MP_FILTER_NAME(f), MP_FILTER_TYPE(filter), MP_FILTER_MODE(filter), (unsigned long)filter);
modperl_filter_t *modperl_filter_new(ap_filter_t *f,                                     apr_bucket_brigade *bb,                                     modperl_filter_mode_e mode,                                     ap_input_mode_t input_mode,                                     apr_read_type_e block,                                     apr_off_t readbytes){    apr_pool_t *p = MP_FILTER_POOL(f);    modperl_filter_t *filter = apr_pcalloc(p, sizeof(*filter));    filter->mode = mode;    filter->f = f;    filter->pool = p;    filter->wbucket.pool = p;    filter->wbucket.filters = &f->next;    filter->wbucket.outcnt = 0;    if (mode == MP_INPUT_FILTER_MODE) {        filter->bb_in  = NULL;        filter->bb_out = bb;        filter->input_mode = input_mode;        filter->block = block;        filter->readbytes = readbytes;    }    else {        filter->bb_in  = bb;        filter->bb_out = NULL;    }        MP_TRACE_f(MP_FUNC, "filter=0x%lx, mode=%s\n",               (unsigned long)filter,               mode == MP_INPUT_FILTER_MODE ? "input" : "output");    return filter;}