X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=filter.h;h=6529028e1a05a1c8b1b989cab8a2ccca00940e0d;hp=8ef0f27f4d83bcb1cf18035d113d753fb0c0d777;hb=810761a3cdf3f75dd8e07a5d903793048c36df1d;hpb=4bd379f56960bddd9623f78b80f40b1dc9337a99 diff --git a/filter.h b/filter.h index 8ef0f27f..6529028e 100644 --- a/filter.h +++ b/filter.h @@ -158,19 +158,6 @@ struct filter { * of \a fn suitably. The open function is assumed to succeed. */ void (*open)(struct filter_node *fn); - /** - * Convert (filter) the given data. - * - * Pointer to the converting function of the filter. It should convert the - * given input buffer \a inbuf which is of length \a len to the previously - * reserved output buffer of \a fn. On success, it must return the number of - * bytes it consumed from \a inbuf. On errors, a negative number indicating the - * kind of the error must be returned. - * - * A zero return value just means that nothing was converted (probably because - * the input buffer was too small). This is not interpreted as an error. - */ - ssize_t (*convert)(char *inbuf, size_t len, struct filter_node *fn); /** * Close one instance of this filter. * @@ -191,21 +178,26 @@ struct filter { * argv. On failure, a negative paraslash error code must be returned. */ int (*parse_config)(int argc, char **argv, void **config); + void (*free_config)(void *conf); /** The help texts for this filter. */ struct ggo_help help; - void (*pre_select)(struct sched *s, struct task *t); + /** + * Convert (filter) the given data. + * + * Pointer to the converting function of the filter. It should convert as + * input data as possible. On errors, the post_select function is supposed + * to set t->error to a (negative) error code. + */ void (*post_select)(struct sched *s, struct task *t); btr_command_handler execute; }; -void close_filters(struct filter_chain *fc); void filter_init(void); int check_filter_arg(char *filter_arg, void **conf); -void filter_post_select(__a_unused struct sched *s, struct task *t); void print_filter_helps(int detailed); -int prepare_filter_node(struct btr_node *btrn, size_t min_len); +void generic_filter_pre_select(struct sched *s, struct task *t); static inline void write_int16_host_endian(char *buf, int val) {