INIT_FILTER_ERRLISTS;
-#define INBUF_SIZE 32 * 1024
-
static struct stdin_task stdin_task_struct;
static struct stdin_task *sit = &stdin_task_struct;
static struct filter_chain filter_chain_struct;
static struct stdout_task stdout_task_struct;
static struct stdout_task *sot = &stdout_task_struct;
-struct gengetopt_args_info conf;
+struct filter_args_info conf;
__printf_2_3 void para_log(int ll, const char* fmt,...)
{
void filter_event_handler(struct task *t)
{
- PARA_ERROR_LOG("%s\n", PARA_STRERROR(-t->ret));
+ PARA_NOTICE_LOG("%s\n", PARA_STRERROR(-t->ret));
unregister_task(t);
}
fc->inbuf = sit->buf;
fc->in_loaded = &sit->loaded;
- fc->reader_eof = &sit->eof;
+ fc->input_eof = &sit->eof;
+ fc->eof = 0;
+ fc->output_eof = &sot->eof;
+ fc->task.private_data = fc;
+ fc->task.pre_select = filter_pre_select;
+ fc->task.event_handler = filter_event_handler;
+ sprintf(fc->task.status, "filter chain");
for (i = 0; i < conf.filter_given; i++) {
char *fa = conf.filter_arg[i];
}
if (list_empty(&fc->filters))
return -E_NO_FILTERS;
- fc->task.private_data = fc;
- fc->task.pre_select = filter_pre_select;
- fc->task.event_handler = filter_event_handler;
- sprintf(fc->task.status, "filter chain");
open_filters();
return 1;
}
struct stat statbuf;
int i;
- if (cmdline_parser(argc, argv, &conf))
+ if (filter_cmdline_parser(argc, argv, &conf))
return -E_FILTER_SYNTAX;
if (!cf) {
char *home = para_homedir();
free(home);
}
if (!stat(cf, &statbuf)) {
- if (cmdline_parser_configfile(cf, &conf, 0, 0, 0))
+ if (filter_cmdline_parser_configfile(cf, &conf, 0, 0, 0))
return -E_FILTER_SYNTAX;
}
if (!conf.list_filters_given)
int ret;
struct sched s;
- init_sched();
stdin_set_defaults(sit);
sit->buf = para_malloc(sit->bufsize),
stdout_set_defaults(sot);
sot->buf = fc->outbuf;
sot->loaded = fc->out_loaded;
- sot->eof = &fc->eof;
+ sot->input_eof = &fc->eof;
register_task(&sot->task);
register_task(&fc->task);
ret = sched(&s);
out:
free(sit->buf);
+ close_filters(fc);
if (ret < 0)
PARA_EMERG_LOG("%s\n", PARA_STRERROR(-ret));
- close_filters(fc);
return ret < 0? EXIT_FAILURE : EXIT_SUCCESS;
}