29#define MODSED_OUTBUF_SIZE 8000
30#define MAX_TRANSIENT_BUCKETS 50
59module AP_MODULE_DECLARE_DATA sed_module;
97 ctx->curoutbuf =
ctx->outbuf;
107 if (
ctx->tpool ==
ctx->r->pool) {
110 ctx->r->connection->bucket_alloc);
116 ctx->r->connection->bucket_alloc);
143 ctx->curoutbuf =
ctx->outbuf;
174 if (
sz >=
ctx->bufsize) {
189 ctx->curoutbuf +=
sz;
198 ctx->curoutbuf +=
sz;
497 "Failed to compile sed expression. %s",
513 "Sed regular expression for Response"),
517 "Sed regular expression for Request"),
APR-UTIL Buckets/Bucket Brigades.
APR Miscellaneous library routines.
#define AP_INIT_TAKE1(directive, func, mconfig, where, help)
#define ap_get_module_config(v, m)
#define AP_DECLARE_MODULE(foo)
void ap_remove_input_filter(ap_filter_t *f)
apr_status_t ap_pass_brigade(ap_filter_t *filter, apr_bucket_brigade *bucket)
ap_filter_rec_t * ap_register_output_filter(const char *name, ap_out_filter_func filter_func, ap_init_filter_func filter_init, ap_filter_type ftype)
apr_status_t ap_filter_rec_t * ap_register_input_filter(const char *name, ap_in_filter_func filter_func, ap_init_filter_func filter_init, ap_filter_type ftype)
apr_status_t ap_get_brigade(ap_filter_t *filter, apr_bucket_brigade *bucket, ap_input_mode_t mode, apr_read_type_e block, apr_off_t readbytes)
void ap_remove_output_filter(ap_filter_t *f)
const unsigned char * buf
int ap_is_initial_req(request_rec *r)
#define APR_BUCKET_IS_FLUSH(e)
#define APR_BUCKET_REMOVE(e)
#define APR_BUCKET_IS_METADATA(e)
#define APR_BRIGADE_INSERT_TAIL(b, e)
#define APR_BUCKET_NEXT(e)
#define APR_BRIGADE_CONCAT(a, b)
#define APR_BRIGADE_EMPTY(b)
#define APR_BRIGADE_SENTINEL(b)
#define apr_bucket_delete(e)
#define APR_BUCKET_IS_EOS(e)
apr_brigade_flush void * ctx
#define APR_BRIGADE_FIRST(b)
#define apr_bucket_read(e, str, len, block)
apr_pool_t const char apr_dbd_t const char ** error
apr_dbd_transaction_t int mode
#define STANDARD20_MODULE_STUFF
apr_seek_where_t apr_off_t * offset
#define apr_pool_create(newpool, parent)
#define apr_pcalloc(p, size)
const void apr_size_t bytes
apr_status_t sed_init_eval(sed_eval_t *eval, sed_commands_t *commands, sed_err_fn_t *errfn, void *data, sed_write_fn_t *writefn, apr_pool_t *p)
void sed_destroy_eval(sed_eval_t *eval)
apr_status_t sed_finalize_eval(sed_eval_t *eval, void *f)
apr_status_t sed_init_commands(sed_commands_t *commands, sed_err_fn_t *errfn, void *data, apr_pool_t *p)
apr_status_t sed_compile_string(sed_commands_t *commands, const char *s)
void sed_destroy_commands(sed_commands_t *commands)
apr_status_t sed_eval_buffer(sed_eval_t *eval, const char *buf, apr_size_t bufsz, void *fout)
static void alloc_outbuf(sed_filter_ctxt *ctx)
static apr_status_t sed_request_filter(ap_filter_t *f, apr_bucket_brigade *bb, ap_input_mode_t mode, apr_read_type_e block, apr_off_t readbytes)
static apr_status_t append_bucket(sed_filter_ctxt *ctx, char *buf, apr_size_t sz)
static apr_status_t sed_write_output(void *dummy, char *buf, apr_size_t sz)
static apr_status_t compile_sed_expr(sed_expr_config *sed_cfg, cmd_parms *cmd, const char *expr)
static const char * sed_add_expr(cmd_parms *cmd, void *cfg, const char *arg)
#define MODSED_OUTBUF_SIZE
static void register_hooks(apr_pool_t *p)
static apr_status_t sed_response_filter(ap_filter_t *f, apr_bucket_brigade *bb)
#define MAX_TRANSIENT_BUCKETS
static apr_status_t flush_output_buffer(sed_filter_ctxt *ctx)
static void clear_ctxpool(sed_filter_ctxt *ctx)
static apr_status_t sed_compile_errf(void *data, const char *error)
static const char * sed_filter_name
static apr_status_t sed_eval_cleanup(void *data)
static apr_status_t log_sed_errf(void *data, const char *error)
static apr_status_t init_context(ap_filter_t *f, sed_expr_config *sed_cfg, int usetpool)
static void * create_sed_dir_config(apr_pool_t *p, char *s)
static const command_rec sed_filter_cmds[]
The representation of a filter chain.
A structure that represents the current request.
sed_commands_t * sed_cmds
apr_bucket_brigade * bbinp
ap_input_mode_t
input filtering modes
typedef int(WSAAPI *apr_winapi_fpt_WSAPoll)(IN OUT LPWSAPOLLFD fdArray